此问题与Pool
apply_async
函数有关。
这个函数不应该异步调用其他函数吗?
代码:
import multiprocessing as mp
def foo_pool(x): return x
result_list = []
def log_result(result): result_list.append(result)
def apply_async_with_callback():
pool = mp.Pool()
for i in range(10):
pool.apply_async(foo_pool, args = (i, ), callback = log_result)
pool.close()
pool.join()
print(result_list)
if __name__ == '__main__':
apply_async_with_callback()
运行这段代码一段时间后,我会不断获得此打印信息:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
为什么要按顺序排列?输出有时会不会出现故障?
答案 0 :(得分:3)
您的函数过快,并且执行时间恒定...因此一切顺其自然。
尝试添加
time.sleep(random.random())
进入您的foo_pool
可以看到一些异步性。