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

Haw*_*ing 21 python multithreading

我在下面有一段代码创建了一些执行任务的线程,它本身就能很好地工作.但是我很难理解为什么我在函数中调用的print语句在所有线程完成并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'
Run Code Online (Sandbox Code Playgroud)

Or *_*uan 18

对于python 3,您现在可以使用这样的flush参数:

print('Your text', flush=True)


Yos*_*ssi 15

这是由于stdout缓冲而发生的.你仍然可以刷新缓冲区:

import sys

print 'starting'
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

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

  • 这对我不起作用:(.看起来我的打印队列无法处理 (3认同)