問題タブ [joblib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - joblib.Parallel 実行の進行状況の追跡
joblib.Parallel実行の全体的な進行状況を追跡する簡単な方法はありますか?
何千ものジョブで構成された長期実行があり、データベースに追跡して記録したいと考えています。ただし、これを行うには、Parallel がタスクを終了するたびにコールバックを実行して、残っているジョブの数を報告する必要があります。
私は以前、Python の stdlib multiprocessing.Pool で同様のタスクを達成しました。これは、Pool のジョブ リストに保留中のジョブの数を記録するスレッドを起動することで実現しました。
コードを見ると、Parallel は Pool を継承しているので、同じトリックを実行できると思いましたが、これらのリストを使用していないようで、内部を「読み取る」方法が他にわかりませんでした。他の方法でステータス。
python - joblib を使用した Python 並列計算
コマンドラインから呼び出すことができる関数で並列処理を機能させようとして問題が発生しています。関数は Web サイトからデータをダウンロードし、何らかの処理を行ってデータをディスクに保存するため、マルチプロセッシングは明らかなソリューションのように思われました。ただし、関数を実行しようとすると、アイドル状態の python プロセスが作成されてフリーズし、何が間違っているのかわかりません。現在、私は64ビットのWindows 7とjoblibでpython 2.7(64ビット)を使用してタスクを実行しています。
問題を再現する単純化されたコードを次に示します。
ipython コンソールから go(True) と入力すると、% cpu とほぼ同じ量のメモリ (16 mb) を使用しない 3 つの新しい python プロセスが作成されますが、ファイルは作成されず、それらを強制終了するまで待機します。
go(False) を実行すると、関数の実行に数ミリ秒しかかからず、期待どおりに動作しますが、並列ではなく順次に動作します。ここで何が間違っていますか?注: コードはモジュールで使用されるため、スクリプト自体を実行するのではなく、コマンド ラインからプロセス全体を呼び出せることが重要です。
python - Python でのブロック全体のメモ化
いくつかの変数を作成するコードがあるとします。
ブロック内で作成/変更されたすべての変数について明示したり、手動でピクルしたりすることなく、上記のブロック全体をメモしたいと思います。Pythonでこれを行うにはどうすればよいですか?
理想的には、それを何か (if/else
またはwith
ステートメント) でラップし、必要に応じて強制的に更新するフラグを設定できるようにしたいと考えています。
概念的に言えば、次のようになります。
コードで定義または変更された各変数を明示的にピクルする必要なく、これを行う方法はありますか? (つまり、最初の実行の最後に保存し、後で値を再利用するだけです)