在 Python 中使用 concurrent.futures 处理大型数据集( 9x200,000x4 np.floats )时,我注意到一开始 CPU 使用率很低(13% ~ 相当于使用了 1 个核心)。然而,过了一会儿,它达到了我对多处理的期望(80-90%)。如果有兴趣,这是我的代码片段。
sections = np.arange(0,9,1)
section_result = []
sectioned_results = []
if __name__ == "__main__":
plt.close()
with concurrent.futures.ProcessPoolExecutor() as executor:
generatorlist = [executor.map(makeimage,sections) for _ in range(num_particles)]
for generator in generatorlist:
for item in generator:
section_result.append(item)
有谁知道这样做的目的?随着我的粒子数量增加,这 1 个核心做某事所需的时间似乎呈指数增长。我的第一个想法是内存分配,因为我预计此运行将占用大约 1-1.5GB,但 python 文档中似乎没有关于此过程的任何内容,我想知道我是否错误地实现了该模块。我已经在相对较低的数据集(10,000 - 100,000)上对此进行了测试,并且肯定看到使用 1 个核心的持续时间有所增加。
非常感谢
一个