問題タブ [parallel-python]
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 - Parallel Python コードをクラウドに移行する
私が現在調査員のために実行している科学計算プロジェクト (たまたま、ここで説明されている確率的トラクトグラフィー法である可能性があります) は、50 ノードのクラスターで 4 か月かかると聞いて、調査員は私に他のオプションを検討するように依頼しました。このプロジェクトは現在、並列 python を使用して、4 次元配列のチャンクを異なるクラスター ノードにファーム アウトし、処理されたチャンクを元に戻しています。
私が現在取り組んでいるジョブは、おそらく粗すぎる可能性があります (5 秒から 10 分、並列 Python でタイムアウトのデフォルトを増やす必要がありました)。書き直すことで、プロセスを 2 倍から 4 倍高速化できると推定しています。リソースをより有効に活用するため (データを分割して元に戻すには時間がかかりすぎるため、これも並列化する必要があります)。ほとんどの作業は、numpy 配列によって行われます。
2 ~ 4 回では不十分であると仮定して、ローカル ハードウェアからコードを取り出すことにしました。このような高スループット コンピューティングの場合、商用オプションは何ですか? また、コードをどのように変更する必要がありますか?
parallel-python - 並列Pythonでppserverを使用する
Modelicaでモンテカルロシミュレーションを操作するために並列Pythonを使用しています。8 ncpusを搭載した単一のコンピューターで作業している場合はすべてが完全に機能しますが、必要なjob_serverにppserverを追加できません。
追加したいコンピューターでppserver.pyを起動しますが、仕事用コンピューターでip-adressを使用しますが、コンピューターはサーバーを使用できず、自分のコンピューターでのみCPUを使用します。ppserver.pyはほとんどまたはまったく情報を提供しないので、誰かがこれを実行するためのヒントを教えてもらえますか?
R
python - ParallelPythonでは、オブジェクトのメソッド(object.func())がオブジェクトの変数(object.value)の操作に失敗します
parallelpythonを使用して、古いシリアルコードを並列に変換しようとしています。これは、オブジェクトの変数を変更するメソッドを持つオブジェクトに大きく依存しています。単純化のために構文を省略した簡略化された例:
私はこのメソッドを次のように呼び出します。コード:
仕事は要約されており、長い計算が行われることを知っているので、コードが実行されていると推測します。
問題は、parallelpythonを初めて使用する場合、メソッドが呼び出されると、それに応じて変数net2.equilibriaが記述され、改訂されたオブジェクト(net2)が取得されることを期待していました。これが私のコードの仕組みであり、オブジェクトの変数に作用するメソッドを持つ独立したオブジェクトです。
むしろ、計算は明白であり、適度なタイミングですが、変数net2.equilibriaは変更されません。PPが関数とオブジェクトのみを受け取り、他の場所で計算し、オブジェクトを返すことはないかのように、古いものが残ります。
何が恋しいですか?
前もって感謝します。
python - ppmap/parallel python に隠れたデッドロックの可能性はありますか?
マップの並列バージョン ( ppmapラッパー、Kirk Strauser による実装) の使用に問題があります。
私が並行して実行しようとしている関数は、BioPython の SeqIO を使用してファイルシステムから解析された多数の文字列 (タンパク質シーケンス) に対して単純な正規表現検索を実行します。各関数呼び出しは、独自のファイルを使用します。
法線マップを使用して関数を実行すると、すべてが期待どおりに機能します。ただし、ppmap を使用すると、実行の一部が単純にフリーズし、CPU の使用率がなくなり、メイン プログラムが KeyboardInterrupt に反応しなくなります。また、実行中のプロセスを見ると、ワーカーはまだ存在しています (ただし、CPU は使用されていません)。
例えば
さらに、ワーカーは特定のデータ エントリでフリーズしているようには見えません。手動でプロセスを強制終了して実行を再実行すると、別の時点で停止します。(そのため、一時的に終了したエントリのリストを保持することに頼り、プログラムを複数回再起動しました)。
問題がどこにあるかを確認する方法はありますか?
私が実行しているコードのサンプル:
ppmap の代わりに単純なマップを使用すると、すべて正常に動作します。
python - 並列pythonワーカーの正常な失敗
非常に複雑な機械学習の問題を並列化するために pp を使用しているときに、さまざまな品質のサードパーティ ライブラリにかなり広範囲に依存する必要があることに気付きました。特に、さまざまなデータセットで集中的に使用すると、かなりの量のエッジ ケース クラッシュが発生します。最終的にはこれらを解決する必要がありますが、短期的には自分のバグと彼らのバグの両方を修正しようとするのは多すぎます - そしてこのライブラリは本当に最高のものです.
私の質問は次のとおりです: pp でローカル ワーカー プロセスの適切な失敗を許可するために使用される確立されたパターンはありますか?
私が見ているオプションは次のとおりです。
- ローカル ワーカー プロセスは一切使用せず、REMOTE ワーカーのみを使用し、ソケット タイムアウトに依存します。
- シェルはすべて、別のプロセスとしてラップして実行するセカンダリ python スクリプトに変換し、終了コードを使用してクラッシュをチェックします。これはおそらく、セグメンテーション違反以外の障害の場合を防ぐために、タイムアウトと組み合わせる必要があります。
ここで何か不足していますか?私は pp.py を見てきましたが、私が知る限り、ワーカープロセスに終了検出はありません。
python - Parallel Python でコールバックを使用してデータベースを更新する
SQLAlchemy を使用してアクセスしている SQLite データベースの約 200,000 エントリに対してテキスト処理を実行しようとしています。並列化したいのですが (Parallel Python を見ています)、正確な方法がわかりません。
エントリが処理されるたびにセッションをコミットしたいので、スクリプトを停止する必要がある場合でも、既に行った作業が失われることはありません。ただし、 session.commit() コマンドをコールバック関数に渡そうとすると、うまくいかないようです。
セッションは からインポートされassignDB
ます。データベースを更新していないだけで、エラーは発生していません。
ご協力いただきありがとうございます。
更新 fuzzy_substring のコードは次のとおりです
ここから得たもの:Fuzzy Substring。私の場合、「針」は最大 8000 の可能な選択肢の 1 つですが、干し草の山は一致させようとしている生の文字列です。考えられるすべての「針」をループして、最高のスコアを持つものを選択します。
parallel-python - シークレットは、コマンドラインオプションまたは構成ファイルを使用して設定する必要があります
私はPythonで並列プログラミングのコードを書きました。これにはppモジュールを使用しています。
job_server = pp.Server(ncpus、ppservers = ppservers)
ここで、ncpus=8はありません。私のシステムのコアの。
Pythonバージョン:2.6.5。
ppバージョン:1.6.2。
しかし、私は次のようなエラーに直面しています。
python - Parallel Python - RuntimeError: 通信パイプ読み取りエラー
OrcFxAPI というモジュールを使用して複数の動的シミュレーションを実行するために、並列 python を使用しています。私のマシンでpythonプログラムとして実行されている場合、プログラムは完全に機能しますが、py2exeを使用してexeファイルに変換してから実行すると、次のエラーが発生します。
私のプログラムのこの行で失敗しています:
しかし、ジョブを送信するときに OrcFxAPI モジュールをインポートするために使用されるパスと関係があるのではないかと思います:
parallel-processing - 並列pythonのキャッシュエラー
並列 Python モジュールを使用している場合、透過キャッシュに問題があります。並列化されたコードによって呼び出されるモジュールのメソッド シグネチャを変更しました。コードを実行すると、古いメソッド シグネチャが必要であるというエラーが表示されます。
.pyc ファイルを使用していて、それでも満足できない場合に備えて、.pyc ファイルを削除しました。モジュールの名前を別の名前に変更すると、再び機能し始めたので、並列 python がモジュールの古いコピーをどこかに保存しているとしか思えません。ドキュメントを確認しましたが、キャッシュの仕組みについては何も言及されていません。キャッシュをクリアする方法はありますか? どんな助けでも大歓迎です!