Python 中的输出缓冲
在 Python 中, print 函数默认缓冲输出以提高性能。这可以防止终端立即显示输出,这在监视脚本进度时可能会出现问题。
为什么它是缓冲
终端是一个单独的程序,用于通信用你的Python脚本。缓冲通过在内部存储文本直到累积到特定数量或遇到换行符来减少向终端发送文本的开销。
修复问题
立即单次打印
要立即打印,您需要显式刷新输出缓冲区。在Python 3.x中,在打印函数中使用flush参数:
for step in steps: run_simulation(step) print('.', end=' ', flush=True)
在Python 2.x中,在标准输出流上调用.flush方法:
for step in steps: run_simulation(step) print '.', sys.stdout.flush()
禁用缓冲
要完全禁用输出行缓冲,您可以修改缓冲区size:
import sys sys.stdout.buffer.write(bytearray('Hello', 'utf-8')) # Use bytearray for Python 3.x sys.stdout.buffer.flush() # Manually flush the buffer as needed
或者,您可以使用无缓冲包装器:
import sys with open(sys.stdout.fileno(), mode='w', buffering=0) as f: # Writes directly to the terminal without buffering f.write('Hello')
以上是为什么我的 Python 脚本没有立即打印?的详细内容。更多信息请关注PHP中文网其他相关文章!