我不确定(1)。
至于 (2),我相信 Python 会在每次换行后刷新到 stdout。但是,如果你将 stdout 重载到文件,它会经常刷新吗?
在 Python 中写入文件时,刷新行为取决于打开文件时指定的缓冲策略。默认情况下,Python 在写入文件时使用缓冲 I/O,这意味着数据被写入内部缓冲区,并且只有当缓冲区已满时才刷新到文件,文件是显式的
以下是不同的缓冲
flush()
1
open('file.txt', 'w', buffering=1)
0
open('file.txt', 'w', buffering=0)
flush()您可以使用m手动刷新文件缓冲区
with open('file.txt', 'w') as f: f.write( f.writ f. 'Hello, World!') f.flush() f.flush() f.flush f.f # Flush the internal buffer to the file
默认情况下,标准输出 (stdout) 在连接到终端时是行缓冲的,这意味着每当遇到换行符时都会刷新缓冲区。这就是为什么在终端中以交互方式运行脚本时通常会立即看到输出的原因。
如果标准输出被重定向到文件或其他非交互式流,缓冲行为可以
为了确保无论环境如何,stdout 都会立即刷新,可以使用flush=True参数print()它是
flush=True
print()
print('Hello, World!', flush=True)
sys.stdout.flush()或者,你可以使用met手动刷新 stdout
sys.stdout.flush()
import sys sys.stdout.write( sys.stdout.write sys.stdout. sys.std sys 'Hello, World!\n') sys.stdout.flush() sys.stdout.flus sys.stdout. sys.std sys
总之,Python 根据缓冲策略刷新到文件,可以是完全缓冲、行缓冲或非缓冲。在交互模式下,Python 在每个换行符后刷新到 stdout,但当 stdout 重定向到文件时,它会遵循文件缓冲策略。您可以使用 me 来控制刷新flush()行为flush为了print()F
flush