【发布时间】:2013-08-16 13:36:40
【问题描述】:
我在下面有一段代码,它创建了几个线程来执行任务,它本身就可以很好地工作。但是,我很难理解为什么我在函数中调用的打印语句在所有线程完成并调用 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'
【问题讨论】:
-
只是想我会指出这是duplicate 在 SO 上提出的另一个(未回答的)问题,但不那么混乱。
-
您的意思是,所有打印件同时进行,还是它们的预期顺序实际上颠倒了?如果它们一次全部运行,则可能是系统缓冲。如果顺序颠倒,那就更有趣了。
-
实际上两者兼而有之。打印 'finshed' 后,打印语句会立即发生。
标签: python multithreading