当前位置: 首页 > 面试题库 >

Python-禁用输出缓冲

尉迟冯浩
2023-03-14
问题内容

默认情况下,Python的解释器是否启用输出缓冲sys.stdout

如果答案是肯定的,那么有什么方法可以禁用它?

到目前为止的建议:

  1. 使用-u命令行开关
  2. 包装sys.stdout每次写入后刷新的对象
  3. 设置环境PYTHONUNBUFFERED变量
  4. sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

还有其他方法可以在执行过程中以编程方式在sys/中设置一些全局标志sys.stdout吗?


问题答案:

你可以使用”python -u”(or#!/usr/bin/env python -u etc)或通过设置环境变量PYTHONUNBUFFERED来跳过整个python进程的缓冲。

你还可以将sys.stdout替换为包装器之类的其他流,该流在每次调用后进行刷新。

class Unbuffered(object):
   def __init__(self, stream):
       self.stream = stream
   def write(self, data):
       self.stream.write(data)
       self.stream.flush()
   def writelines(self, datas):
       self.stream.writelines(datas)
       self.stream.flush()
   def __getattr__(self, attr):
       return getattr(self.stream, attr)

import sys
sys.stdout = Unbuffered(sys.stdout)
print 'Hello'


 类似资料:
  • 问题内容: 我编写了一个简单的中继脚本,该脚本连接到网络摄像机并从套接字读取数据,并使用打印功能输出此数据。数据是已设置边界的MJPG数据。我只是输出读取的数据。 问题是PHP似乎正在缓冲这些数据。当我将相机设置为1 FPS时,Feed将冻结7-8秒,然后快速显示8帧。如果将分辨率设置为很大,则相机每秒将以大约1帧的速度移动。我认为那时正在发生一些缓冲(因为大尺寸的缓冲区会很快填充,而小尺寸的缓冲

  • 我正在与django合作,做facebook集成,需要一个测试服务器。我对Apache及其缓存有很多问题。pyc文件,我甚至在stackoverflow上问过。 该解决方案可行,但我想知道是否有一个选项可以禁用此类文件的Apache缓存。服务器重启对我来说可能是个问题。 编辑: 这是django。wsgi代码:

  • 问题内容: 如何使用文件快速关闭所有 Log4J 输出? 问题答案: 将级别设置为OFF(而不是DEBUG,INFO等)。

  • 我正在使用xslt转换xml文档。我需要使用输出转义来获得我的结果,因为我使用的工作服务器只会输出

  • 我正在尝试运行一个python程序,它使用Selenium和Chrome来分析一些网站的数据。我遇到的问题是,Selenium或Webdriver正在向控制台中注入我不关心的输出,使查看我的程序输出变得困难。我读过很多关于这个的帖子,有各种各样的驱动程序选项,但似乎什么都不管用。这些选项的最佳做法是删除以下内容: 但所有这些仍然存在: 有没有办法把这些也去掉?以下是我对webdriver的设置(我

  • 问题内容: 我有一个名为的二进制文件,在被调用时会生成输出。如果我从Bash shell调用它,则大多数输出​​都被抑制。所有输出都被抑制 我有一个python脚本,需要调用。我希望能够从生成输出,同时抑制的所有输出。 从内,我已经试过,和,等,但这些都不抑制所有来自A的输出 我可以运行,但是那也抑制了所有的输出,我也不想这样做。 有人有建议吗? 问题答案: 如果您拥有Python 2.4,则可以