我正在使用Enthought Canopy IDE来编写Python,print
命令的输出在我预期的时候没有到达ipython输出窗口。最明确的解释方法是举例:
import time
print 1
print 2
time.sleep(1)
print 3
for i in range(10):
print i
time.sleep(0.5)
在一秒钟后同时显示初始1
,2
和3
,然后在显示下一个0
之前有半秒延迟。
(与1
和2
的预期即时和同时显示相反,然后在同时显示3
和0
之前延迟1秒,然后是第二次延误)
这导致了我的问题,因为我希望在一段耗时的脚本运行之前获取变量的读数,并且在调用print
命令后,我无法在不终止程序的情况下显示这些读数。< / p>
任何想法/解决方案?
我在Windows 7上,如果您需要任何其他规格/配置详情,请与我们联系...
谢谢!
答案 0 :(得分:2)
您可以使用额外的-u
参数启动Python解释器,这会为您提供无缓冲的输出(即即时)。
或者,您可以在每sys.stdout.flush()
后致电print
。甚至可能将它包装在这样的函数中:
from __future__ import print_function
import sys
def print_flush(*args):
print(*args)
sys.stdout.flush()