Python Multiprocesing apply_async错误运行

时间:2019-10-25 23:59:19

标签: python multiprocessing

我最近遇到了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)-发生这种情况的某些原因是什么?

谢谢!

0 个答案:

没有答案