参数瓶颈python多处理



我正在使用pool。Apply_async并行化我的代码。我传入的一个参数是我存储在内存中的一个集合。给定我在传递一个指向集合的指针(而不是集合本身),多处理是否为每个CPU复制集合,或者是传递给每个CPU的相同引用?我假设给定的集合存储在内存中,每个CPU将接收它自己的集合。如果不是这样,这是否会成为瓶颈,因为每个CPU都会请求相同的对象?

所以原则上,如果您为新进程创建任务,数据必须复制到新进程,因为进程不共享内存(与线程相比)。具体细节因操作系统的不同而有所不同(例如fork vs spawn),但一般来说数据必须被复制。

这是否是瓶颈取决于你在进程中实际执行的计算量与必须传输到子进程的数据量。我建议测量时间:(1)父进程触发的进程启动,(2)子进程内部的实际计算开始,(3)计算结束。这应该会大致给出增量(2-1)和计算量(3-2)。有了这些数字,您可以最好地判断IO是瓶颈还是计算瓶颈。

相关内容

  • 没有找到相关文章

最新更新