2016-12-08 52 views
2

我正在從事分佈式集羣計算。要實現這樣的系統,我試圖使用dask.distriuted的python庫。但是存在一個問題,即dworkers不適用於多進程,意味着2個或3個dworkers一起工作,但不支持多處理lib中支持的多個執行。如何使dworkers進行多進程?

爲例:

def testFun(): 
while True: 
    time.sleep(3) 
    print('looping') 

如果我在client.submit(testFun)。它會執行此功能無限次執行該功能,然後就再也回不來到下一個步驟。喜歡這個程序:

client.submit(testFun) 
client.submit(testFun) 

在這裏,直到執行第一行它永遠不會到下一行。 我想讓多工處理器工作。我將如何做到這一點?

回答

1

這是因爲函數具有相同的簽名,只運行一次。

您可以通過生成的密鑰來判斷。請參閱:

 
In [5]: client.submit(testFun) 
<Future: status: pending, key: testFun-a4102f4653c498f9fafc90003d87bd08> 

In [6]: client.submit(testFun) 
<Future: status: pending, key: testFun-a4102f4653c498f9fafc90003d87bd08> 

試試這個

 
def testFun(x): 
    while True: 
     time.sleep(3) 
     print('looping', x) 
 
In [13]: client.submit(testFun, 1) 
<Future: status: pending, key: testFun-afa640a088a357e5f8dd46c1937af3a7> 

In [14]: client.submit(testFun, 2) 
<Future: status: pending, key: testFun-98309530cb5b26d69131e54a521b8b40> 
+0

感謝現在運轉。你能告訴我什麼是你提交函數傳遞的參數,一個是函數名。而另一個是什麼? –

+0

@SaikatKundu將附加參數傳遞給'testFun'。這使得兩個任務的簽名(函數名+參數)不同。 – Rolando