【发布时间】:2019-10-24 08:31:21
【问题描述】:
我正在尝试使用 multiprocessing 模块,尤其是 Pool.apply_async() 函数。
这段代码运行良好:
import multiprocessing
def do():
print("Foobar", flush=True)
with multiprocessing.Pool(1) as pool:
for i in range(2):
pool.apply_async(do)
pool.close()
pool.join()
"Foobar" 字符串被打印两次。
但是,如果我把这段代码放在一个函数中,然后调用这个函数,什么也不会发生。没有错误也没有"Foobar",程序静默结束。
import multiprocessing
def test():
def do():
print("Foobar", flush=True)
with multiprocessing.Pool(1) as pool:
for i in range(5):
pool.apply_async(do)
pool.close()
pool.join()
test()
为什么?我在 Linux 上使用 Python 3.7.3。
【问题讨论】:
标签: python python-3.x asynchronous multiprocessing python-multiprocessing