python - Python Multiprocesing apply_async 运行不正常
问题描述
我最近遇到了一个让我困惑的 Python 多处理包问题。在一个程序中,我有以下几行代码:
import multiprocessing as mp
...
def logResult(result):
results.append(result)
cpu = mp.cpu_count()
pool = mp.Pool(processes=cpu)
results = []
num = 400 # A tunable parameter
for x in range(0, num):
pool.apply_async(integrationFunction, args=(<some list of arguments...>), callback=logResult)
pool.close()
pool.join()
print(len(results)) # Unpredictable
...
我无法确切透露 中发生了什么integrationFunction
,但我知道以下内容: - 它numpy.dblquad
在某些时候使用,并且可能非常慢。
问题是,在最后一行代码中,我打印results
列表的长度,每次运行程序时都会得到一个不稳定的结果 - 它通常会打印 100-120 左右的一些数字num
,而在 400 时,但在奇怪的情况下,它可能会打印超出范围的数字(有时甚至是 0)。但我希望它能够准确打印num
(在这个例子中是 400)——这可能是什么原因造成的?
谢谢!