問題タブ [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.
python - python.multiprocessing では、現在のプロセスでプロキシを作成して他のプロセスに渡すにはどうすればよいですか?
私はmultiprocessing
Pythonでライブラリを使用しています。関数から返されたオブジェクトにプロキシを作成する必要があることを定義する方法はわかりますが、現在のプロセス内のオブジェクトをプロキシに変換して、それらをパラメーターとして渡すことができるようにしたいと考えています。
たとえば、次のスクリプトを実行します。
...次の出力が得られます...
...しかし、出力の最終行が_MainProcess
.
別のプロセスを作成してそこから実行することもできますが、プロセス間で渡す必要があるデータの量を最小限に抑えようとしています。Manager
オブジェクトのドキュメントにはserve_forever
メソッドが記載されていましたが、サポートされていないようです。何か案は?誰か知っていますか?
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によって提供される解決策は機能しますが、競合状態を回避することはできません
python - マルチプロセッシング使用時の奇妙な unpickling エラー
マルチプロセッシングを使用すると、次のエラーが発生します。
Cレベルで何かがおかしいように聞こえますが、これが何を意味するのかまったくわかりません。誰でもこれに光を当てることができますか?
更新:わかりましたので、これを修正する方法を見つけました。しかし、私はまだ少し困惑しています。私はこのクラスのインスタンスを返しています:
このオブジェクトのインスタンスを返すと、エラーが発生します。ただし、to_dict
辞書を呼び出して返すと、機能します。私は何を間違っていますか?
python - 別のファイル/スクリプトをスレッド化または作成せずに、サブプロセスで関数を実行することは可能ですか?
別のスクリプトを使用してサブプロセスを開くことに関するドキュメントしか見つかりませんでした。関数オブジェクトを渡す方法、または関数コードを渡す簡単な方法を知っている人はいますか?
python - 子プロセスのpid取得
Python の multiprocessing モジュールを使用して新しいプロセスを生成しています
次のように :
iostatコマンドやマルチプロセッシングモジュールで実行したコマンドのpidを取得したい
私が実行すると:
このコマンドが実行されているサブシェルの pid が表示されます。
どんな助けも貴重です。
前もって感謝します
python - 複数の入力を持つ関数のマルチプロセッシング
Python では、multiprocessing
モジュールを使用して、値の範囲で関数を並列に実行できます。たとえば、これは f の最初の 100000 回の評価のリストを生成します。
f が複数の入力を取り、変数が 1 つしか変化しない場合、同様のことができますか? たとえば、これをどのように並列化しますか。
python - リモートマネージャーを使用して Python オブジェクトを渡すにはどうすればよいですか?
Python で単純なクライアント サーバー アプリケーションを開発しています。マネージャを使用して共有キューを設定していますが、サーバーからクライアントに任意のオブジェクトを渡す方法がわかりません。manager.register 関数と関係があると思われますが、マルチプロセッシングのドキュメントではあまり説明されていません。そこにある唯一の例は、キューを使用し、他には何も使用していません。
これが私のコードです:
そしてシンプルなサーバー...
そして単純なクライアント...
これを実行すると、次の場所でクラッシュします。
Python がキューや processor_function で問題なく、オブジェクト パラメータでチョークするのはなぜですか? ありがとう!
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?
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
毎回問題を回避することなく、マルチプロセッシングを最大限に活用するために適切に作業することに興味があります。
python - IPスタックを経由しないリモートPythonマネージャー
Pythonmultiprocessing
パッケージは、あるpythonプロセスが別のプロセスとIPCできるリモートマネージャー機能をサポートしていますが、それらの例から、これはOSのIPスタックを経由する必要があるようです。
2つのプロセスがローカルであると仮定して、IPスタックを経由せずにリモートマネージャーを使用する方法はありますか?