0
poolDict
這裏的poolDict
字典用於寫入以multiprocessing
Pool()開始的進程的一些更新。 while loop
正在後臺運行,它正在監視poolDict發生的任何更新。條件滿足時len(poolDict)==3
while循環停止。 下面的代碼運行良好。但是使用這裏概述的相同方法的真實世界程序引入了一些奇怪的行爲。例如,while loop
即使在條件滿足後也不想停止運行。對於while
循環,最終需要至少15秒才能「實現」len(poolDict)已經等於3.它會導致明顯的時滯,需要修正。而不是while
循環還有什麼可以用作替代品?採取什麼方法來立即更新?注意多處理完成
import time
import multiprocessing as mp
poolDict=mp.Manager().dict()
def myFunction(arg):
print '\n\tprocessing arg', arg, '...'
for i in range(arg+1):
if i==arg:
poolDict[arg]=True
print '\n\t\t...processing completed for', arg
pool=mp.Pool(processes=2)
pool.map_async(myFunction, [15000001,15000002,15000003])
status=True
while status:
print status
time.sleep(.2)
if len(poolDict)==3:
status=False
print '...while loop was stopped'
print 'completed'
如果我使用'result = pool.map_async(myFunction,...) result.wait()'方法如何獲得myFunction()的返回值?它們是否全部存儲在'result'變量中?如何檢索由myFunction()值返回的? – alphanumeric