Delay/discrepancy 预期和实际输出之间 iPython 输出

Delay/discrepancy between expected and actual output to iPython output

我正在使用 Enthought Canopy IDE 编写 Python 并且 print 命令的输出没有达到 ipython 输出 window在我希望他们这样做的时候。最清楚的解释就是举个例子:

import time

print 1
print 2
time.sleep(1)
print 3

for i in range(10):
    print i
    time.sleep(0.5)

最初的123在一秒后同时显示,然后有半秒的延迟才显示下一个0

(与预期的 12 的预期瞬时和同时显示相反,然后在同时显示 30 之前延迟 1 秒,然后延迟半秒)

这导致了我的问题,因为我希望在脚本的耗时部分运行之前获取变量的读数,并且我无法在调用 print 命令后不终止程序的情况下让它显示这些读数.

任何ideas/solutions?

我在 Windows 7,如果您需要任何其他 specs/config 详细信息,请告诉我...

谢谢!

您可以使用附加的 -u 参数启动 Python 解释器,这会为您提供无缓冲的输出(即即时)。 或者您可以在每 print 之后调用 sys.stdout.flush()。甚至可以将它包装在这样的函数中:

from __future__ import print_function
import sys

def print_flush(*args):
    print(*args)
    sys.stdout.flush()