2016-08-15 11 views
2

私は、グローバルにdask.diagnostics.ProgressBarを登録する方法があることを知っています。それはかなりいいですが、自分のセル出力を破壊します。 distributed.diagnostics.progress機能もあり、Jupyter Notebook Progress Barウィジェットで実行の進行状況を表示することもできますが、先物を受け取ることが期待されます。Dask/DistributedにText Progress Barの代わりにJupyter Notebookプログレスバーウィジェットを登録する方法はありますか?

私がここに持っている問題は、dask.diagnostics.ProgressBarを明示的DASK /分散先物と呼ばれるようにstdout(私はプログレスバーを使用しながら、私は何を印刷することはできません)、およびdistributed.diagnostics.progressニーズを使用していることですが、私は何かを計算し、私の機能を持っていますDask/Distributedの将来ではなく、 "result"クラスのインスタンスを返します。

答えて

2

今日の短い答えは、今日「いいえ」です。これは構築することは可能ですが、あなたにはいくらかの努力が必要です。

distributed.diagnostics.progress関数はイベントループ内で動作し、ノートブックがセルを実行しているときに更新を停止します。同期dask.computeの経験(グラフを与えれば結果が得られます)とdistributed.diagnostics.progressによって生成されたIPythonウィジェットのプログレスバーを使用する方法はありません。

ただし、単一のマシンや分散機スケジューラの両方が(私たちは進捗バーを建てた方法です)ので、あなた自身を構築したい場合、システムのいずれかを拡張することが可能であるべきプラグインシステムがあります。

+0

あなたは「もIPythonウィジェットのプログレスバーを使用しexperienceand同期dask.computeを持って、両方の方法はありません」の周りの状況を明確にしてくださいもらえますか? Jupyterノートブックウィジェットの制限、Dask/Distributed制限、または実装されていない機能のみですか? (P.S.あなたはあなたの答えに2つの全く同じリンクを投稿しました;あなたは分散文書をリンクするつもりでしたか?) –

+1

これは基本的な制限ではありません。私たちはスレッドイベントで完全に待つことはできません。その代わりにJupyterノートを実行するTornado IOLoopに制御を戻す必要があります。 'sync'呼び出しは、計算が終了するまでブロックされます。 Jupyterプラグインを更新したい場合、ブロックできません。 1つの解決策は、ループでタイムアウトをブロックすることです。 – MRocklin

+1

代わりに、単一マシンスケジューラ用のIPythonウィジェットベースのプラグインを構築することもできます。 – MRocklin

関連する問題