为什么在下面的示例中,myFunct()不打印任何由“multiprocessing”运行的消息?如何解决呢?你知道吗
import multiprocessing as mp
poolDict=mp.Manager().dict()
def myFunct(arg):
print 'myFunct():', arg
for i in range(110):
for n in range(500000):
pass
poolDict[arg]=i
print 'myFunct(): completed', arg, poolDict
from multiprocessing import Pool
pool = Pool(processes=2)
myArgsList=['arg1','arg2','arg3']
pool.map_async( myFunct, myArgsList)
print 'completed'
如果使用apply\u async()而不是map\u async(),并添加close()和join()调用,则效果良好:
结果:
这不是打印,因为主进程在调用
map_async
后立即退出,所以没有任何子进程有机会实际运行。如果让脚本等待子脚本完成,则会按预期打印:bash提示符的输出:
相关问题 更多 >
编程相关推荐