問題タブ [pathos]
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 - マルチプロセッシング ライブラリを使用する場合、リソースを特定のプロセスにバインドするにはどうすればよいですか?
50 のプロセスがあり、それらを使用して (たとえば) 20000 の異なる入力値を操作しているとします。(私は pathos ライブラリを使用しています。これは、Python のマルチプロセッシング ライブラリと同様に動作すると思います。)
プロセスごとに 1 つの SQLAlchemy データベース エンジンを作成したいと考えています (ただし、入力値ごとに作成するリソースがありません)。次に、そのプロセスを使用して処理されるすべての入力が同じデータベース エンジンで動作するようにします。
これどうやってするの?
python - pathos.ProcessingPool と pickle の間の相互作用
実行する必要がある計算のリストがあります。私はそれらを使用して並列化しています
helperFunction
と同じファイルでParameters
定義されている というクラスを作成します
ここまでは順調ですね。helperFunction
は、オブジェクトに基づいていくつかの計算を行い、Parameters
その属性の一部を変更し、最後に を使用してそれらを保存しますpickle
。保存を行うヘルパー関数 (別のモジュールから) の関連する抜粋を次に示します。
にpickle.dump()
到達すると、デバッガーが実際にその例外に直面したワーカーにステップインしないため、デバッグが難しい例外が発生します。したがって、ダンプが発生する直前にブレークポイントを作成し、そのコマンドを手動で入力しました。出力は次のとおりです。
helperFunction
奇妙なことに、これは、並列化しない場合、つまり手動でループスルーする場合には発生しません。私はParameters
(親クラスではなく)正しいものを開いていると確信しています。
再現可能な例がないとデバッグが難しいことはわかっていますが、この部分での解決策は期待できません。おそらく、より一般的な質問は次のとおりです。
pickle.dump()
別のモジュールを介して使用するコードを並列化する場合、何に注意する必要がありますか?
python - マルチプロセッシング、問題あり
私はかなり初心者のプログラマーで、初めてマルチプロセッシングに手を入れています。通常の酸洗エラーに遭遇した後、ここで検索したところ、Pathos が使用するのに最適である可能性が高いことがわかりました。
アプリケーション全体の要点は、ssh を使用してサーバーのコレクションに接続し、データを引き出してデータベースに保存することです。それはうまく機能しますが、マルチプロセッシングを実行すると明らかに有益です。
元の関数呼び出しは次のようになります。
要するに、SQL クエリは辞書のリストを提供し、pullNewData() に各レコードの辞書をフィードし、接続し、すべてをプルし、データベースを更新します。
数千行のコードを書き直したくないので、簡単に適応できることを願っています。次の例はすべて次のとおりです。
頂点で。私はもう試した:
try/except で丸めたとしても、静かに失敗しました
同じ、サイレント失敗:
でも:
動作しましたが、それぞれを順番に実行しただけです。
必死になって、それをリスト内包表記の中に入れようとさえしました(はい、これは恐ろしく醜いですが、その時点で私は何でもしたでしょう)
それで、どうすればこれを行うことができますか?各レコードの新しい接続を並行して起動するにはどうすればよいですか?
python - Python multiprocessing & pathos: インポート エラー
マルチプロセッシングとパトスを使用していくつかのPythonコードを書いています。マルチプロセッシングの使用に慣れるために小さなテスト プログラムを作成しました。ローカル マシンでは問題なく動作しますが、別のクラスターでは実行できません。
次のエラーが表示されます。
しかし、私がするとき
pathos と multiprocessing モジュールの両方が明らかに存在します。
なぜこれが起こっているのか、どんな明るいアイデアでも大歓迎です!
小さなテストコードは次のとおりです。
python - 哀愁マルチプロセッシングオブジェクト
エラーを生成しているpathos multiprocessingを使用して書いているコードがあります。問題は、一連のオブジェクトに対して pathos.multiprocessing.pool を使用してプロセスを分散すると、クラス定義で初期化されたオブジェクトとは異なるオブジェクトで作業が行われるように見えることです。
と で初期__init__
化された構成オブジェクトは同じです。したがって、これらの構成は への呼び出しで使用されるものです。run_multi()
new_forces
pool.map
しかし、run
定義で参照されているオブジェクトは、メモリの別の部分を占有します。
これを引き起こしている可能性のあるアイデアをいただければ幸いです。
ありがとう!
python - Linux プラットフォームでの実行時に pathos.multiprocessing が pickle エラーをスローする
Python でモジュールdispyを使用して、クラスター内の複数のノードにジョブを分散しようとしています。私は2レベルの並列実行を行っています。ジョブ送信の第 1 レベル、各ノードの第 2 レベル。
もともと私はcreate_cluster_worker
関数を呼び出す上でマルチプロセッシングモジュールを直接使用していました。_dbm
しかし、ピクルできないマルチプロセッシング ライブラリからピクル エラーが発生しました。オンラインで検索した後、pathos.multiprocessing が最適なようです。だから私はフォローしようとしましたが、同様にエラーが発生しました。
エラーは次のように表示されます。
このエラーをスキップする方法がわかりません。どんな提案でも大歓迎です!