我写了以下代码
import multiprocessing as mp
import time
#
def f(x) :
time.sleep(0.1)
return pow( x, 2 )
#
my_chunksize = 10
#
if __name__ == '__main__':
#
po = mp.Pool( processes=2 )
po_res = po.map_async( f, range(100), my_chunksize )
#po.close()
#po.join()
#
print po_res.get()
这很好用。为什么po.close()
和po.join()
不需要?为什么主要过程在孩子处理之前不会消亡?
答案 0 :(得分:2)
你的决赛:
print po_res.get()
语句阻止主程序,直到map_async()
完全结束。它是.get()
阻塞,等待整个结果列表可用。直到传递给map_async()
的所有工作都已完成并且所有结果都返回到主程序之后,这种情况才会发生。
评论该声明,你会发现你的程序很快退出。
尽管如此,最好不要使用.close()
和.join()
。