簡體   English   中英

如何獲得在遠程服務器上生成進程的悲哀?

[英]How do I get pathos to spawn processes on my remote server?

我有2台計算機,兩台計算機都裝有pathos Python模塊。 我有一個Pathos多處理池,並且一直在嘗試使用以下代碼讓Pathos在兩個CPU之間平均分配進程數:

from pathos.multiprocessing import ProcessPool
ngramPool = ProcessPool()
ngramPool.ncpus = 8
ngramPool.servers = ('localhost:5653','ec2-18-223-23-82.us-east-2.compute.amazonaws.com:5653')
questionNgrams = []
i = 0
previousI = 0
previousTime = time.time()
#Test questions
#questions = ["To whom do I owe this great pleasure","Who do I owe this great pleasure which is a great pleasure to","Who do I owe this great pleasure to"]
questionNgrams = ngramPool.map(n_gram.stringToNgrams,questions)

但是,不是在我的本地CPU上運行4個進程,而是在Amazon EC2實例上運行4個進程,而是在我的本地處理器上運行所有8個進程。 如何設置悲哀,使其在我的CPU上產生4個進程,在Amazon實例上產生4個進程?

我是pathos作家。 使用分布式資源並不是您想要的那樣簡單。 您是正確的(在您的評論中), pathos使用基於RPC的(包裝在SSH中)連接。 您也是正確的,因為您必須在遠程主機上設置一個ppserver 如果需要建立ssh連接,則可以使用pathos_connect腳本(請參閱相關文檔),或者直接使用pathos.secure模塊中的代碼來進行。 請注意,您還需要確保您具有有效的ssh-agent並設置了ssh密鑰對身份驗證(即,在初始連接后不使用密碼)。

話雖如此,要讓4位遠程工作人員和4位本地工作人員特別困難-因為ParallelPool是動態負載平衡的。 因此,如果您有“快速”任務要運行,則絕大多數(如果不是全部)任務將在本地運行,因為旋轉連接和運送任務以及檢索結果將比僅在本地運行作業花費更多時間。 您可以通過清零(或嚴重限制) ncpus本地可用的ncpus來強制任務遠程運行,但是在本地運行的作業數量將取決於本地可用任務數量的自動負載平衡以及時間的一些度量與完成遠程連接和運行作業所需的時間相比,單個作業需要完成的時間。

暫無
暫無

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

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