我最近换了操作系统,正在使用一个更新的Python(2.7)。在我的旧系统中,我曾经可以即时打印。例如,假设我有一个计算密集的For循环:
for i in range(10):
huge calculation
print i
然后当代码完成每次迭代时,它将打印i
但是,在我当前的系统上,python似乎缓存了stdout,使终端在几分钟内保持空白,然后打印:
1
2
3
一个接一个。再过几分钟,它就会打印出:
4
5
6
等等。如何使python在到达print
语句时立即打印?
Tags:
从Python 3.3开始,您可以简单地将flush=True传递给print函数。
导入新的print-as-function,如Python 3.x所示:
(将语句放在脚本/模块的顶部)
这允许您用自己的打印功能替换新的打印功能:
这样做的好处是,当您有一天升级到Python 3.x时,您的脚本将以同样的方式工作
Ps1:我没有试过,但是print as函数在默认情况下可能会刷新。
PS2:你可能也对我的progressbar example感兴趣。
打印后尝试调用stdout刷新
或者使用command line选项-u,它:
相关问题 更多 >
编程相关推荐