首页 >后端开发 >Python教程 >如何在Python中强制立即终端输出?

如何在Python中强制立即终端输出?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-13 12:44:02209浏览

How to Force Immediate Terminal Output in Python?

使用 Python 实现持久终端输出

在 Python 中,存在一个问题:如果没有存在换行符。发生这种情况是由于输出缓冲,输出被临时存储以提高性能。

发生了什么?

默认情况下,终端将输出分为几行。如果一行结束时没有换行符,则输出将保留在缓冲区中直至完成。因此,当 print 语句后没有换行符时,直到循环或程序终止时才会显示输出。

修复问题

For单次打印:

在 Python 3 中, print 函数接受一个flush参数。将其设置为 True 会强制立即显示输出:

import time

for _ in range(10):
    print('.', end=' ', flush=True)
    time.sleep(.2)  # or other time-consuming work

在 Python 2 中,print 是语句,使用标准输出流 (sys.stdout) 的刷新方法:

import time

for _ in range(10):
    print '.',
    sys.stdout.flush()
    time.sleep(.2)  # or other time-consuming work

对于多次打印:

您可以完全禁用输出行缓冲,以便更有效地处理多次打印,而不是在每次打印后刷新。有多种解决方案:

  • 使用 print(file=sys.stderr) 将输出重定向到标准错误,该错误不被缓冲。
  • 使用 sys.stdout.writelines 和列表一次性输出所有打印语句。
  • 安装无缓冲包并利用其 Unbuffered 类创建无缓冲 stdout 流。

以上是如何在Python中强制立即终端输出?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn