簡體   English   中英

在Python中使用多處理模塊時,如何確保每個進程使用大致相同的時間?

[英]How to make sure each process uses roughly same amount of time when using multiprocessing module in Python?

目前,我正在使用Python多處理模塊開發異步梯度算法,其主要思想是運行多個進程以異步方式更新全局參數數組。 我已經完成了大部分框架,但遇到一個問題,即某些進程似乎在某些進程“卡住”而其他進程仍在運行時,則導致該算法的效果降低。 所以我想知道是否有好的方法來確保它們使用大致相同的時間?

謝謝!

這幾乎完全取決於您要解決的問題。 如果您將一項大型任務分配給多個工作人員,而一個任務卻比其他任務大得多,那么您將遇到這種情況。

有幾種選擇可以避免這種情況:

  1. 嘗試更精確地估計每個塊的工作量。 根據您的任務,這可能是可能的。 預計工作量最大的塊應該被拆分。
  2. 解決此問題的一種非常常見的方法是將任務分成很多非常小的塊,遠遠超過了現有的工人。 然后將所有塊放入隊列,讓您的工作人員從隊列中吃掉它們的塊。 這樣,當一個工作人員接收到一個簡單的數據塊時,它將很快完成並立即從隊列中取出下一個數據塊,從而不會最終變得空閑,而其他工作人員似乎被他們較難的數據塊“卡住”了。

真正的僵局當然不會通過任何方法解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM