2016-12-08 6 views
2

私は分散クラスタコンピューティングに取り組んでいます。このようなシステムを実装するために、私はdask.distriutedであるpythonライブラリを使用しようとしています。しかし、従業員はマルチプロセスではなく、2人または3人の作業者を意味し、一緒に働くが、マルチプロセッシングのlibをサポートする複数の実行をサポートしていないという問題がある。例えばマルチプロセスのための作業者を作る方法は?

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

私はclient.submitでこの機能を実行すると、無限の時間が、それは次のステップに来ることは決してありませんのために(testFun).ITは、この機能を実行します。このプログラムのように:

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

ここでは、最初の行を実行するまで次の行には到着しません。 私はマルチプロセッシングのためにその作業者を作りたいと思っています。私はこれをどのようにして行いますか?

答えて

1

これは、関数が同じシグネチャを持ち、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'に渡されます。これにより、2つのタスクの署名(関数名+引数)が異なります。 – Rolando

関連する問題