Python Concurrent.futures CPU使用情况查询



在Python中对大型数据集(9x200000x4 np.floats(使用concurrent.futures时,我注意到一开始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.5GB的内存,但python文档中似乎没有任何关于这个过程的内容,我想知道我是否错误地实现了这个模块。我已经在相对较低的数据集(10000-100000(上测试了这一点,并且肯定看到使用1个核心的持续时间有所增加。

非常感谢

这一切都取决于您的程序实际在做什么。例如,如果您在子流程中运行的都是while True: pass,那么我希望您的使用率会立即提高到100%。

例如,任何绑定IO的操作(从磁盘读取,等待API响应(都会导致在程序等待该操作的结果时CPU使用率较低。

相关内容

  • 没有找到相关文章

最新更新