python打印功能实时

Ris*_*shi 12 python printing stdout flush

我最近切换操作系统,并使用更新的Python(2.7).在我的旧系统上,我曾经能够即时打印.例如,假设我有一个计算密集的for循环:

for i in range(10):
  huge calculation
  print i
Run Code Online (Sandbox Code Playgroud)

然后当代码完成每次迭代时,它会打印出来 i

但是,在我当前的系统上,python似乎缓存了标准输出,以便终端空白几分钟,然后打印:

1
2
3

简而言之.然后,再过几分钟,它会打印出来:

4
5
6

等等.如何在print声明到达声明后立即进行python打印?

Ole*_*liv 13

打印后尝试调用stdout的flush

import sys

...
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

或者使用命令行选项-u,其中:

强制stdin,stdout和stderr完全无缓冲.

  • @Rishi:你最接近自动(不必编译自己的python版本)就是设置`PYTHONUNBUFFERED`环境变量. (2认同)

Tob*_*obu 12

从Python 3.3开始,您只需将flush = True传递给print函数即可.