2017-09-11 20 views
2

jupyterノートブックから使用するときにdaskから異常な動作が発生しています。だから私は地元のクライアントを開始し、それを行う仕事のリストを与えています。 1. DASKは、この例では9個以上のプロセスを開始します。jupyterノートブック経由でdask分散コンピューティングを使用する

from dask.distributed import Client 

def inc(x): 
return x + 1 

if __name__ == '__main__': 
c = Client() 
futures = [c.submit(inc, i) for i in range(1,10)] 
result = c.gather(futures) 
print(len(result)) 

問題は、私はことを実現、ということである:私の実際のコードは、私がここにあなたのための簡単な例を入れていますので、少し複雑です。 2.コードが実行され、処理が完了すると(ノートブックでは何も実行されていません)、daskによって作成されたプロセスは強制終了されません(クライアントはシャットダウンされません)。私がトップをすると、まだ生きているすべてのプロセスを見ることができます。

私は、このドキュメントではclient.close()オプションがあると見ていましたが、面白いことに、そのような機能は0.15.2にはありません。

daskプロセスが強制終了されるのは、私がjupyterノートブックを停止したときだけです。この問題により、不思議で予測できないパフォーマンスの問題が発生しています。ノートブックでコードが実行されていないときに、プロセスが強制終了されたり、クライアントがシャットダウンしたりすることはありますか?

答えて

2

デフォルトのClientは、LocalClusterdocsを参照)に渡されるオプションのパラメータを許可し、たとえば希望するプロセスの数を指定することができます。また、これはコンテキストマネージャーであり、終了するとプロセスを終了し終了します。

with Client(n_workers=2) as c: 
    futures = [c.submit(inc, i) for i in range(1,10)] 
    result = c.gather(futures) 
    print(len(result)) 

これが終了すると、プロセスは終了します。

+0

ありがとうございました。あなたの助言が助けられ、私はプロセスの数を制御することができましたが、プロセスはまだ生きていて殺されていません。コンテキストマネージャの設定を変更する必要はありますか? –

+0

私はあなたの助けを借りてそれを働かせました。ありがとうございました。私はちょっとした変更が必要でした。 クラスタ= LocalCluster(n_workers = 9) クライアント(クラスタ)をc: –

+0

としてください。 – mdurant

関連する問題