Python多进程应用异步不稳定运行

2024-09-29 23:26:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近遇到了一个关于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列表的长度,每次运行程序时都会得到一个不稳定的结果num是400时,它通常打印100-120左右的数字,但在奇数情况下,它可能打印超出范围的数字(有时甚至是0)。但是我希望它能精确地打印num(在这个例子中是400)-发生这种情况的原因是什么

谢谢


Tags: 代码import程序as情况数字mpresult

热门问题