問題タブ [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 - 並列 Python: コールバックとは?
Parallel Pythonでは、サブミット関数にコールバック( documentation ) と呼ばれるものがありますが、それはあまりよく説明されていないようです。数日前に彼らのフォーラムに投稿しましたが、応答がありません。誰かがコールバックとは何か、そしてそれが何のために使われるかを説明してくれますか?
python - Parallel Python:「送信」に引数を指定するにはどうすればよいですか?
これは、parallel-python タグを使用した 2 番目の質問にすぎません。ドキュメントに目を通し、主題をグーグルで検索した後、回答と提案で最高の幸運が得られた場所であるため、ここに来ました。
以下は、すべての関連情報を pp.
引数を含む私の送信ステートメントは次のとおりです。
大文字の名前はすべてdepfuncs
クラスの名前です。globals()
クラスをどこに置くべきか、辞書にあるのでそれらを含める必要があるかどうかさえわかりませんでした。しかし、depfuncs()
空の状態で実行すると、" " などのエラーが発生しますTree not defined
(たとえば)。
key_seq
はジェネレーターなので、使用できるようにするには、そのインスタンスを操作する必要があります.next()
。
ks
で定義されていglobals()
ます。他のどこにも含めなかった場合、「ks is not defined
」というエラーが表示されました。に含めるks
とdepfuncs
、次のエラーが表示されます。
arg
を参照していると確信していks
ます。では、どこ.submit()
について話しks
ますか?何がどこにあるのかわかりません。ありがとう。
python - プログラムの構造化。Pythonのクラスと関数
私は、遺伝子技術を使用して方程式を進化させるプログラムを書いています。関数「mainfunc」をParallelPythonの「submit」関数に送信できるようにしたい。関数'mainfunc'は、Utilityクラスで定義された2つまたは3つのメソッドを呼び出します。他のクラスをインスタンス化し、さまざまなメソッドを呼び出します。私が欲しいのは、すべてを1つの名前空間に収めることだと思います。そのため、関数'mainfunc'内のクラスの一部(おそらくすべてである必要があります)をインスタンス化しました。ユーティリティメソッド'generate()'を呼び出します。一連の実行に従うとすると、コード内のすべてのクラスとメソッドが関係します。
これで、方程式がツリーに保存されます。ツリーが生成、変更、またはクロスブリードされるたびに、ツリーのディクショナリ属性からアクセスできるように、ノードに新しいキーを指定する必要があります。クラス'KeySeq'はこれらのキーを生成します。
Parallel Pythonでは、「mainfunc」の複数のインスタンスをPPの「submit」関数に送信します。それぞれが「KeySeq」にアクセスできる必要があります。それらがすべてKeySeqの同じインスタンスにアクセスして、返されたツリーのどのノードも同じキーを持たないようにすると便利ですが、必要に応じてそれを回避できます。
だから:私の質問は、すべてをmainfuncに詰め込むことについてです。ありがとう(編集)mainfuncにすべてを含めない場合は、さまざまな場所でさまざまな議論を渡すことによって、依存関数などについてPPに伝えようとする必要があります。私はそれを避けようとしています。
(後期編集)ks.next()が'generate()関数内で呼び出された場合、エラー' NameError:global name'ks' isnotdefined'を返します。
python - Parallel Python を使用する場合、ジョブが実行されたマシンを確認する方法はありますか?
並列 python を使用して簡単なプログラムを作成しましたが、すべて正常に動作します。ただし、主に好奇心のために、各タスクがどのマシンで実行され、どのくらいの時間がかかったかを知りたい.
返されるジョブのこの情報をプログラムで取得する方法はありますか?
python - 割り当て前に参照されるローカル変数「sresult」
PPを使おうとすると複数の問題が発生しました。私はpython2.6とpp1.6.0rc3を実行しています。次のテストコードを使用します。
次の結果が得られます。
どんな助けでも大歓迎です。
sockets - parallel-python エラー: RuntimeError("ソケット接続が壊れています")
関数を送信するために簡単なプログラムを使用しています:
結果は次のとおりです。
python - オブジェクトは死ぬことはありません (私が見つけられないオブジェクトへの参照はまだあります)
私は parallel-python を使用しており、関数で新しいジョブ サーバーを起動しています。関数が終了した後、関数から返さなかったにもかかわらず、まだ存在します(これをテストするためにweakrefを使用しました)。このオブジェクトへの参照がまだどこかにあると思います。私の2つの理論:スレッドを開始し、ルートロガーにログを記録します。
私の質問: どうにかして、このオブジェクトへの参照がまだ存在する名前空間を見つけることはできますか? 私はweakref参照を持っています。ロガーを切り離す方法を知っている人はいますか? 他にどんなデバッグの提案がありますか?
ここに私のテストコードがあります:
前もって感謝します ヴォルフガング
python - Parallel Python を使用したワーカー プロセスのログ記録
クラスターで Parallel Python を使用する科学計算の保守を継承しました。Parallel Python では、ジョブが ppserver に送信されます。ppserver は (この場合) 他のコンピューターで既に実行されている ppserver プロセスと対話し、タスクを ppworkers プロセスに分配します。
標準ライブラリのログ モジュールを使用して、ppserver に送信された関数からのエラーとデバッグ情報をログに記録したいと考えています。これらの ppworker は (別々のコンピューターで) 別々のプロセスとして実行されるため、ログを適切に構成する方法がわかりません。プロセスごとに個別のファイルにログを記録する必要がありますか? たぶん、すべてを改善するログハンドラーがあるでしょうか?
また、どのコンピュータのどのプロセスでエラーが発生したかについてのレポートも必要ですが、ログインを記述しているコードはおそらくこれらのことを認識していません。多分それはppserverレベルで起こっているべきですか?
(Parallel Python Forums にクロス投稿された質問のバージョン。非 SO ユーザーからこれについて何かを得た場合は、ここに回答を投稿します)
python - Parallel Pythonがそのように機能するのはなぜですか?
Parallel Pythonでは、渡された関数がそのジョブ送信呼び出しで変数と名前空間とともに必要とするモジュールをラップする必要があるのはなぜですか?モジュールレベルの「グローバル」変数を保持する必要があるのでしょうか。(それが起こっているすべてである場合)
送信機能:
python - 不可解な並列Pythonの問題-TRANSPORT_SOCKET_TIMEOUT
次のコードは私には正しく機能していないようです。たとえば、次のコマンドを使用して、ネットワーク上の別のコンピューターでppserverを起動する必要があります。
このサーバーが起動したら、私のマシンで次のコードを実行します。
奇妙な部分:/home/tomb/statusfile.txtを見ると、関数が数回実行されているかのように、数回書き込まれていることがわかります。私はこれが1時間以上続くのを観察しましたが、job()
戻ってくることはありませんでした。
Odder:testfunc定義の反復回数を10 ** 8に変更すると、関数は1回だけ実行され、期待どおりの結果が返されます。
ある種の競合状態のように見えますか?ローカルコアを使用するだけで問題なく動作します。これは、ppv1.6.0および1.5.7の場合です。
更新:約775,000,000:一貫性のない結果が得られます:2つのジョブが1回繰り返され、最初に終了します。
1週間後の更新:これを回避するために独自の並列処理モジュールを作成しました。誰かがこれを理解しない限り、将来的には並列pythonを回避します-もう少し詳しく見ていきます(実際にはソースに飛び込みます)コード)ある時点で。
数か月後の更新:残りのハードな感情はありません、ParallelPython。アプリケーションを移行する時間があるとすぐに戻る予定です。ソリューションを反映するためのタイトル編集。