Python 为什么';t map_async()需要pool.close()和pool.join()?

Python 为什么';t map_async()需要pool.close()和pool.join()?,python,multiprocessing,pool,Python,Multiprocessing,Pool,我编写了以下代码 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_chunksi

我编写了以下代码

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()
?为什么主进程没有在子进程之前消亡?

您的最终进程:

print po_res.get()
语句阻塞主程序,直到
map\u async()
完全完成。是
.get()
阻塞,等待整个结果列表可用。直到传递给
map\u async()
的所有工作完成并将所有结果返回到主程序,这才可能发生

将该语句注释掉,您将看到您的程序很快退出

也就是说,不管怎样,最好使用
.close()
.join()