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)
最初的1
、2
和3
在一秒后同时显示,然后有半秒的延迟才显示下一个0
。
(与预期的 1
和 2
的预期瞬时和同时显示相反,然后在同时显示 3
和 0
之前延迟 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()
我正在使用 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)
最初的1
、2
和3
在一秒后同时显示,然后有半秒的延迟才显示下一个0
。
(与预期的 1
和 2
的预期瞬时和同时显示相反,然后在同时显示 3
和 0
之前延迟 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()