在Python中使用多处理模块时,如何确保每个进程使用大致相同的时间



目前我正在使用Python多处理模块研究异步梯度算法,主要思想是我运行多个进程,异步更新全局参数数组。我已经完成了大部分的框架,但我有一个问题,有些进程似乎"卡住"有时,而其他仍在运行,这导致这个算法不太有效。所以我想知道是否有好的方法来确保他们使用大致相同的时间?

谢谢!

这几乎完全取决于您要解决的问题。如果你把一个大任务分配给几个工人,其中一个不可预测地得到了比其他工人大得多的块,你就会遇到这种情况。

有几个选项可以避免它:

  1. 尝试更精确地估计每个块的工作量。根据你的任务,这是可能的。应该拆分具有最多预期工作的块。
  2. 一种非常常见的方法是将任务分成许多非常小的块,比当前的工人多很多。然后把所有的块放入队列中,让你的员工从队列中吃他们的块。这样,当一个worker接收到一个简单的块时,它将快速完成它并立即从队列中获取下一个块,从而不会在其他worker似乎被"卡住"时闲置。

一个真正的死锁当然不会被任何方法所修复。

相关内容

  • 没有找到相关文章

最新更新