我最近遇到了一个关于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)-发生这种情况的原因是什么
谢谢
目前没有回答
相关问题 更多 >
编程相关推荐