問題タブ [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.

0 投票する
1 に答える
1725 参照

python - ネストされた階層的パトス マルチプロセッシング マップを実行する方法は?

ディルのシリアライゼーション/ピッキングでコードの大部分を構築したので、pathos マルチプロセッシングを使用して計算を並列化しようとしています。Pathos それはディルの自然な拡張です。

ネストして実行しようとすると

other の中ProcessingPool().mapで、私は受け取ります:

例えば:

収量

私はamap(...).get()成功せずに使用してみました。これはpathos 0.2.0にあります。

ネストされた並列化を許可する最良の方法は何ですか?

アップデート

私はこの時点で正直にならなければなりません。そして、私はその主張"daemonic processes are not allowed to have children"を哀れみから取り除いたことを告白しなければなりません。KeyboardInterruptまた、それらのワーカーとワーカーに カスケードするものを構築しました...以下のソリューションの一部:

コンソールと IPython ノートブック (停止ボタン付き) から動作するようですが、すべてのコーナー ケースで 100% 正しいかどうかはわかりません。

0 投票する
1 に答える
666 参照

python - Pathos 処理プールの再帰制限

パトスと並列化しようとしているタスクがあります。非並列バージョンを実行すると、正常に実行されます。ただし、1 プロセスの pathos プールを実行すると、RuntimeError: maximum recursion depth exceeded が発生します。

例えば:

このエラーが発生する理由をデバッグしようとして、1 つのオブジェクトのリストをマッピングしようとしました。これはマルチプロセッシングなしで機能します

t1.getValue適用される高価な関数はどこにありますか。同じ2つの引数に適用されるこれらのexpesive関数の完全なリストがあります. これが並列処理の出番です。ただし、次のエラーがスローされます。

興味深いのは、getValue再帰的でないことです。これは、スタック制限に達したときに時々発生することを知っています。

getValueマルチプロセッシングを機能させるエラーの原因となっているのはどの部分かを特定するにはどうすればよいですか? この時点からこれをデバッグする方法がわからないため、行き詰まっています。データをプロセスに渡すときの酸洗エラーが実際に原因である可能性はありますか? getValue舞台裏でいくつかの大きな構造を処理します。

0 投票する
1 に答える
235 参照

python-2.7 - pathos.multiprocessing の使用中に cPickle エラーが発生しましたか?

マルチプロセッシングを使用して、パンダのExcelの読み取りを高速化しようとしています。ただし、マルチプロセッシングを使用すると、エラー cPickle.PicklingError: Can't pickle : attribute lookup __builtin__.function failed が発生します

次を実行しようとすると: import dill from pathos.multiprocessing import ProcessPool

pathos.multiprocessing はこの問題を解決するように設計されていませんか? ここで何かを見落としていますか?

編集:完全なエラーコードのトレース

0 投票する
1 に答える
612 参照

linux - Pathos: Linux でスポーンを強制する

Windows で動作する Python コードがありますが、Linux で実行するとハングします。私は JPype を使用しているので、複数の共有プロセスが同じパイプを使用して Java にアクセスしようとすると、問題が発生する可能性があると思われます (異なるプロセスが作成されますが、JPype 行でハングします)。Pathos でスポーンを強制して Windows の実装をコピーする方法はありますか? (たとえば、通常のマルチプロセッシング ライブラリの set_start_method または get_context?)

ありがとう。

0 投票する
1 に答える
1477 参照

python - クラス関数で python マルチプロセッシングを使用する場合の酸洗エラー

とにscheduler.py基づく並列タスクランナーである3 つのスクリプトがあります。2 番目のスクリプトは、いくつかのクラスと関数を含むスクリプトであり、最後に、から並列化クラスを作成し、それを のクラスに渡し、全体を実行します。multiprocessing.Processmultiprocessing.Pipesimulation.pyxscheduler.pyscheduler.pysimulation.pyx

ターゲットの並列関数がすべての最上位にある場合は正常に動作しますが、クラス関数でsimulation.pyx使用しようとするとすぐに酸洗エラーが発生します。scheduler.pysimulation.pyx

コードは数千行に及ぶため、概念的なコードのみを示します。

small_main_script.py:



simulation.pyx:

問題は、次のような役に立たないダミー関数を使用すると

最上位、つまりクラスの外側に配置すると、並列化は正常に機能しますが、クラス内に配置するとすぐにMain酸洗エラーが発生します。クラスでも定義されている実際のターゲット関数を使用し、Mainそれを最上位に移動したくない場合、同じエラーが発生します。sleep(self,job)クラス内でダミー関数を使用すると、次のようになりますMain。クラスの外にあるときは正常に動作します。

私はPython 2.7を使用しています

アップデート

問題をさらに切り分けることができました。サードパーティのパッケージpathos multiprocessingを使用すると、クラス関数をピクルすることができます。問題は、クラス インスタンスである関数引数を使用するとエラーが発生することです。

0 投票する
0 に答える
709 参照

python - pathos.multiprocessing を使用した AssertionError

私はpython 2.7を使用しています。これが私のコードの一部です:

ただし、これを実行すると、空白になりますAssertionError:

このエラーは、この質問で説明されているエラーに似ているようですが、修正はより明白です。上記のコードを削除して実行しましpool.close()pool.join()が、同じ結果が得られました。

考え?

0 投票する
0 に答える
431 参照

python - ネストされたプールを使用して、pathos ですべての cpus を使用する方法

マルチプロセッシングのネストされたプールに関するこの質問に答える:

https://stackoverflow.com/a/40852258/6522112

私が提案したコードは、私が望んでいた方法で応答しませんでした。つまり、 と の場合ThreadingPool(8)ProcessingPool(3)プロセスの数は 24 になると予想していましたが、3 つしか得られませんでした。そこで、デーモン フラグを False に設定することでネストされたプロセス プールを許可する、このhttps://stackoverflow.com/a/8963618/6522112の使用を続けました。これは完全に機能しますが:

  1. 24 ではなく 3 プロセスしか得られないのは正常でしたか?
  2. このハックで正しくやっていますか?
  3. 最終的な目的は、クラスター上の複数のノードを使用してこれを行うことです。これはそれを防ぎますか?
  4. 考慮すべきのタイプについてはよくわかりませんが、組み合わせmapだけが機能しているようです。imap洞察はありますか?

pathos単純なマルチプロセッシングの代わりに @MikeMcKernsを使用する変更されたコードを次に示します。

これを使用する場合は注意が必要です。内側のプールを終了する必要があります。そうしないと、ゾンビになってしまいます。