Python并发.CPU使用率查询

Python并发.CPU使用率查询,python,concurrency,cpu,concurrent.futures,process-pool,Python,Concurrency,Cpu,Concurrent.futures,Process Pool,在Python中对大型数据集(9x200000x4 np.floats)使用concurrent.futures时,我注意到一开始CPU使用率很低(13%相当于使用1个内核)。然而,过了一段时间,它就达到了我对多处理的预期(80-90%)。如果有兴趣,下面是我的代码片段 sections = np.arange(0,9,1) section_result = [] sectioned_results = [] if __name__ == "__main__":

在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-1.5GB的内存,但是python文档中似乎没有关于这个过程的任何内容,我想知道我是否错误地实现了这个模块。我已经在相对较低的数据集(10000-100000)上测试过,并且肯定看到使用1核的持续时间有所增加

非常感谢


A

这完全取决于您的程序实际在做什么。例如,如果您在子流程中运行的都是
,而True:pass
,那么我希望您能立即看到您的使用率上升到100%


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

遗憾的是,我的代码中既没有IO绑定操作,也没有API使用。我将尝试尽可能清楚地了解代码的结构。该代码的一般目的是模拟10^6个粒子在一个盒子内随机散射。这将使用numpys随机生成器生成随机起始位置和速度,然后使用s=ut,直到它穿过长方体边界,然后反射。