首页 > 后端开发 > Python教程 > 为什么我的 Python 输出有延迟,如何才能使其实时显示?

为什么我的 Python 输出有延迟,如何才能使其实时显示?

DDD
发布: 2024-11-12 11:31:02
原创
599 人浏览过

Why is my Python output delayed, and how can I make it appear in real-time?

理解 Python 中的延迟终端输出

默认情况下,Python 会缓冲输出,通过一次性传输所有输出而不是单独传输到终端等其他程序来提高性能。在没有换行符的情况下,打印语句通常一次一行缓冲,从而导致显示预期文本的延迟。

解决问题

对于单个打印语句:

  • Python 3.x: 利用print 函数中的lush参数来显式刷新输出,如下所示:
for _ in range(10):
    print('.', end=' ', flush=True)
    time.sleep(.2)  # or other time-consuming work
登录后复制
  • Python 2.x: 使用 sys.flush 方法。 stdout 流强制输出传输:
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)
    登录后复制
  • 使用第三方库像 tqdm 或 joblib 一样提供实时更新的进度条。

通过实现这些技术,您可以确保输出立即显示在终端中,从而在脚本执行期间提供更多信息和交互体验.

以上是为什么我的 Python 输出有延迟,如何才能使其实时显示?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板