默认情况下,Python 会缓冲输出,通过一次性传输所有输出而不是单独传输到终端等其他程序来提高性能。在没有换行符的情况下,打印语句通常一次一行缓冲,从而导致显示预期文本的延迟。
对于单个打印语句:
for _ in range(10): print('.', end=' ', flush=True) time.sleep(.2) # or other time-consuming work
for _ in range(10): print '.', sys.stdout.flush() time.sleep(.2) # or other time-consuming work
对于多重打印语句:
您可以完全禁用行缓冲,而不是单独刷新每个打印。以下是一些可能的解决方案:
将环境变量 PYTHONUNBUFFERED 设置为 True:
export PYTHONUNBUFFERED=1
使用 fcntl 模块操作文件描述符:
import fcntl stdout_fileno = sys.stdout.fileno() fcntl.fcntl(stdout_fileno, fcntl.F_SETFL, os.O_NONBLOCK)
通过实现这些技术,您可以确保输出立即显示在终端中,从而在脚本执行期间提供更多信息和交互体验.
以上是为什么我的 Python 输出有延迟,如何才能使其实时显示?的详细内容。更多信息请关注PHP中文网其他相关文章!