問題タブ [python-multiprocessing]

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 に答える
3179 参照

python - python.multiprocessing では、現在のプロセスでプロキシを作成して他のプロセスに渡すにはどうすればよいですか?

私はmultiprocessingPythonでライブラリを使用しています。関数から返されたオブジェクトにプロキシを作成する必要があることを定義する方法はわかりますが、現在のプロセス内のオブジェクトをプロキシに変換して、それらをパラメーターとして渡すことができるようにしたいと考えています。

たとえば、次のスクリプトを実行します。

...次の出力が得られます...

...しかし、出力の最終行が_MainProcess.

別のプロセスを作成してそこから実行することもできますが、プロセス間で渡す必要があるデータの量を最小限に抑えようとしています。Managerオブジェクトのドキュメントにはserve_foreverメソッドが記載されていましたが、サポートされていないようです。何か案は?誰か知っていますか?

0 投票する
3 に答える
1503 参照

python - Python マルチプロセッシング マネージャーと複合パターンの共有

マルチプロセッシング マネージャーを介して複合構造を共有しようとしていますが、複合クラス メソッドの 1 つだけを使用しようとすると、「 RuntimeError: maximum recursion depth exceeded 」という問題が発生しました。

クラスはcode.activestateのトークンであり、マネージャーに含める前に私がテストしました。

クラスをプロセスに取得し、そのaddChild()メソッドを呼び出すとき、プロセスの外では動作している間、 RunTimeErrorを保持しました。

複合クラスは ** ____getattr()____ ** メソッドを実装する SpecialDict クラスから継承します。

addChild()の呼び出し中に、python のインタープリターが別の ** ____getattr()____ ** を探す可能性があります。これは、正しいものがマネージャーによってプロキシされていないためですか?

もしそうなら、そのクラス/メソッドへのプロキシを作成する正しい方法は私には明らかではありません

次のコードは、この状態を正確に再現します。

1) これは manager.py です:

2) コンポジットをこの consumer.py に使用したい:

3) controller.py によるすべての起動を実行します。

AlberT によって提案された CompositeDict() クラスのプロキシを実行する方法に関するこの関連する質問を見てください。

tgrayによって提供される解決策は機能しますが、競合状態を回避することはできません

0 投票する
3 に答える
3709 参照

python - マルチプロセッシング使用時の奇妙な unpickling エラー

マルチプロセッシングを使用すると、次のエラーが発生します。

Cレベルで何かがおかしいように聞こえますが、これが何を意味するのかまったくわかりません。誰でもこれに光を当てることができますか?

更新:わかりましたので、これを修正する方法を見つけました。しかし、私はまだ少し困惑しています。私はこのクラスのインスタンスを返しています:

このオブジェクトのインスタンスを返すと、エラーが発生します。ただし、to_dict辞書を呼び出して返すと、機能します。私は何を間違っていますか?

0 投票する
3 に答える
112058 参照

python - 別のファイル/スクリプトをスレッド化または作成せずに、サブプロセスで関数を実行することは可能ですか?

別のスクリプトを使用してサブプロセスを開くことに関するドキュメントしか見つかりませんでした。関数オブジェクトを渡す方法、または関数コードを渡す簡単な方法を知っている人はいますか?

0 投票する
5 に答える
38413 参照

python - 子プロセスのpid取得

Python の multiprocessing モジュールを使用して新しいプロセスを生成しています

次のように :

iostatコマンドやマルチプロセッシングモジュールで実行したコマンドのpidを取得したい

私が実行すると:

このコマンドが実行されているサブシェルの pid が表示されます。

どんな助けも貴重です。

前もって感謝します

0 投票する
5 に答える
25127 参照

python - 複数の入力を持つ関数のマルチプロセッシング

Python では、multiprocessingモジュールを使用して、値の範囲で関数を並列に実行できます。たとえば、これは f の最初の 100000 回の評価のリストを生成します。

f が複数の入力を取り、変数が 1 つしか変化しない場合、同様のことができますか? たとえば、これをどのように並列化しますか。

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

python - リモートマネージャーを使用して Python オブジェクトを渡すにはどうすればよいですか?

Python で単純なクライアント サーバー アプリケーションを開発しています。マネージャを使用して共有キューを設定していますが、サーバーからクライアントに任意のオブジェクトを渡す方法がわかりません。manager.register 関数と関係があると思われますが、マルチプロセッシングのドキュメントではあまり説明されていません。そこにある唯一の例は、キューを使用し、他には何も使用していません。

これが私のコードです:

そしてシンプルなサーバー...

そして単純なクライアント...

これを実行すると、次の場所でクラッシュします。

Python がキューや processor_function で問題なく、オブジェクト パラメータでチョークするのはなぜですか? ありがとう!

0 投票する
22 に答える
775551 参照

python - How to use multiprocessing pool.map with multiple arguments

In the Python multiprocessing library, is there a variant of pool.map which supports multiple arguments?

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

python - マルチプロセッシング使用時のPicklingError

マルチプロセッシングモジュールでPool.map_async()(および)を使用するときに問題が発生します。に入力された関数が「通常の」関数であるPool.map()限り、正常に機能するループ並列関数を実装しました。Pool.map_async関数が例えばクラスへのメソッドである場合、私は:を取得しPicklingErrorます

私はPythonを科学計算にのみ使用しているので、ピクルスの概念にあまり精通しておらず、今日それについて少し学びました。マルチプロセッシングPool.map()を使用しているときに<type'instancemethod'>をピクルすることができないなど、以前のいくつかの回答を見てきましたが、回答で提供されているリンクをたどっても、それを機能させる方法がわかりません。

私のコード。目的は、複数のコアを使用して通常のrvのベクトルをシミュレートすることです。これは単なる例であり、複数のコアで実行しても見返りがない場合があることに注意してください。

マルチプロセッシングPool.map()を使用しているときに<type'instancemethod'>をピクルスにできないという質問への回答で提供されているリンクをたどると、Steven Bethard(ほぼ最後)がcopy_regモジュールの使用を提案します。彼のコードは次のとおりです。

これをどうやって利用できるのかよくわかりません。私が思いついたのは、コードの直前に置くことだけでしたが、役に立ちませんでした。簡単な解決策は、もちろん、機能するものを使用して、に関与しないようにすることcopy_regです。copy_reg毎回問題を回避することなく、マルチプロセッシングを最大限に活用するために適切に作業することに興味があります。

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

python - IPスタックを経由しないリモートPythonマネージャー

Pythonmultiprocessingパッケージは、あるpythonプロセスが別のプロセスとIPCできるリモートマネージャー機能をサポートしていますが、それらの例から、これはOSのIPスタックを経由する必要があるようです。 2つのプロセスがローカルであると仮定して、IPスタックを経由せずにリモートマネージャーを使用する方法はありますか?