【发布时间】:2017-08-05 13:09:20
【问题描述】:
考虑以下python代码:
import time
time.sleep(5)
print("WOT!")
time.sleep(5)
#... 50 similar lines
time.sleep(5)
我在 Sublime 2 中使用标准 python 构建运行它。 你期望会发生什么? 该程序在所有 time.sleep() 的整个持续时间内都处于休眠状态,然后才打印“WOT!”。 所以似乎不知何故,所有这些让线程休眠的语句都在 print 语句之前执行,但只有在 Sublime Text 中运行时才执行。 例如,如果我输入以下代码:
while True:
print("Hello world!")
time.sleep(5)
sublime 中的输出窗口不会输出任何内容。
有人可以确认他们遇到了同样的问题,并提出解决方案吗?
【问题讨论】:
-
我的运行良好。您能否提及您运行脚本所采取的步骤?
-
这个问题的一个可能原因是程序的输出被缓冲了,并且由于 Sublime 显示的输出实际上是发送到
stdout,所以你只有在全部完成后才能看到输出. (或者在第二种情况下,它已经运行了足够长的时间来填充缓冲区)。如果是这种情况,在睡眠之前添加sys,stdout.flush()这样简单的操作应该可以解决问题(或使用无缓冲输出)。
标签: python multithreading debugging sublimetext2