编辑:实际上发生的事情是我在Programmer的记事本中运行它并等待程序完成,然后捕获stdout输出并将其打印到控制台,然后我运行它来自mingw,按预期工作。这种行为是显而易见的,我只是没有意识到我在程序员的记事本中运行程序,而不是像往常一样运行shell。我的坏。
我正在使用Python线程,但遇到了这个奇怪的问题,如果我在回调函数中有一个print语句和1秒睡眠语句,它就不会进行打印直到睡眠时间的总和已经过去了。
这是导致此行为的代码:
import threading
import time
def callback():
for i in range(3):
print "Hello, World!";
time.sleep(1)
myThread = threading.Thread (
target = callback,
args = []
)
myThread.start()
这就是我希望它表现的方式:
public class Demo
{
public static void main(String[] args)
{
(new Thread(() -> {
for (int i = 0; i < 3; ++i) {
System.out.println("Hello, World!");
try {
Thread.sleep(1000);
} catch(Exception e){
// rethrow as an unchecked exception but do not silence it.
throw (RuntimeException)e;
}
}
})).start();
}
}
是什么导致Python以这种方式运行,我怎样才能让它按照我期望的方式运行?
答案 0 :(得分:2)
根据您的评论,我感觉您的问题是由于系统没有刷新标准输出。要解决此问题,请尝试以下方法:
import sys
然后就在你的打印功能之后:
sys.stdout.flush()