一尘不染

Python多线程打印语句被延迟,直到所有线程完成执行

python

我下面有一段代码,该代码创建了几个线程来执行任务,而单独运行效果很好。但是,我很难理解为什么在所有线程完成并print 'finished'调用该语句之前,我在函数中调用的打印语句不会执行。我希望它们在线程执行时被调用。有没有简单的方法可以做到这一点,为什么首先要这样做呢?

def func(param):
    time.sleep(.25)
    print param*2

if __name__ == '__main__':
    print 'starting execution'
    launchTime = time.clock()
    params = range(10)
    pool=multiprocessing.Pool(processes=100) #use N processes to download the data
    _=pool.map(func,params)
    print 'finished'

阅读 132

收藏
2020-12-20

共1个答案

一尘不染

这是由于stdout缓冲引起的。您仍然可以刷新缓冲区:

import sys

print 'starting'
sys.stdout.flush()

您可以在此处和此处找到有关此问题的更多信息。

2020-12-20