問題タブ [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マルチプロセッシング
特定のタスクを周期的に実行する必要があるxmlrpcサーバーで作業しています。私は xmlrpc サービスのコアとして twisted を使用していますが、ちょっとした問題が発生しています:
それぞれの結合がブロックされないように、これら 2 つのプロセスに結合するにはどうすればよいですか?
(私は「結合」にかなり混乱しています。なぜそれがブロックされ、グーグルで検索しましたが、結合の使用法についてあまり役立つ説明が見つかりません。誰かが私にこれを説明できますか?)
よろしく
python - Python のマルチプロセッシング プールでのキーボード割り込み
Python のマルチプロセッシング プールで KeyboardInterrupt イベントを処理するにはどうすればよいですか? 以下に簡単な例を示します。
上記のコードを実行すると、KeyboardInterrupt
を押す^C
と が発生しますが、プロセスはその時点で単にハングするため、外部で強制終了する必要があります。
^C
いつでも押して、すべてのプロセスを正常に終了できるようにしたいと考えています。
python - 並列化された Python スクリプトをどのようにプロファイリングできますか?
my_parallel_script.py
いくつかのことを並列化するために使用する python スクリプトが呼び出されmultiprocessing
、次のコマンドで実行するとします。
これにより、親プロセスのみのプロファイリング出力が生成されます。子プロセスで行われた呼び出しはまったく記録されません。子プロセスもプロファイリングできますか?
唯一のオプションがソースを変更することである場合、これを行う最も簡単な方法は何ですか?
python - Python マルチプロセッシング プールのプロファイリング
マルチプロセッシング プール内の各プロセスで cProfile.runctx() を実行して、ソース内のマルチプロセッシングのボトルネックが何であるかを把握しようとしています。これが私がやろうとしていることの簡単な例です:
残念ながら、プロファイラーで "result = square(i)" を実行しようとしても、それが呼び出されたスコープ内の 'result' には影響しません。ここでやろうとしていることをどのように達成できますか?
python - Python 2.6はキュー/パイプ/などを介して接続オブジェクトを送信します
このバグ (Python Issue 4892)があると、次のエラーが発生します。
Connection オブジェクトを Queue に渡すための回避策を知っている人はいますか?
ありがとうございました。
multiprocessing - InterlockedIncrement と ++
InterlockedIncrement はどのように機能しますか?
問題はマルチプロセッサ システムだけですか?
すべてのプロセッサで割り込みを無効にするのは何ですか?
python - python.multiprocessing では、現在のプロセスでプロキシを作成して他のプロセスに渡すにはどうすればよいですか?
私はmultiprocessing
Pythonでライブラリを使用しています。関数から返されたオブジェクトにプロキシを作成する必要があることを定義する方法はわかりますが、現在のプロセス内のオブジェクトをプロキシに変換して、それらをパラメーターとして渡すことができるようにしたいと考えています。
たとえば、次のスクリプトを実行します。
...次の出力が得られます...
...しかし、出力の最終行が_MainProcess
.
別のプロセスを作成してそこから実行することもできますが、プロセス間で渡す必要があるデータの量を最小限に抑えようとしています。Manager
オブジェクトのドキュメントにはserve_forever
メソッドが記載されていましたが、サポートされていないようです。何か案は?誰か知っていますか?
python - マルチプロセッシング ワーカーを持つツイスト ネットワーク クライアント?
そのため、Twisted + Stomper を STOMP クライアントとして使用するアプリケーションを用意しました。これは、作業を multiprocessing.Pool のワーカーにファームアウトします。
Pythonスクリプトを使用してこれを起動すると、これは問題なく動作するように見えます。これは(簡略化して)次のようになります。
これは展開用にパッケージ化されるので、twistd スクリプトを利用して tac ファイルから実行することにしました。
これが私の非常によく似た tac ファイルです。
説明のために、いくつかの詳細を折りたたんだり変更したりしています。うまくいけば、それらは問題の本質ではありませんでした。たとえば、私のアプリにはプラグイン システムがあり、プールは別のメソッドによって初期化され、その後、プラグインの process() メソッドの 1 つを渡す pool.apply_async() を使用して、作業がプールに委任されます。
したがって、スクリプト (stompclient.py) を実行すると、すべてが期待どおりに機能します。
非デーモン モード (-n) で twist を実行しても、問題なく動作するように見えます。
ただし、デーモン モードで実行すると機能しません。
アプリケーションは正常に起動しているように見えますが、作業をフォークしようとするとハングします。「ハング」とは、子プロセスが何も要求されず、親 (pool.apply_async() と呼ばれる) がそこに座って応答が返されるのを待っているように見えることを意味します。
私は Twisted + multiprocessing で愚かなことをしていると確信していますが、誰かが私のアプローチの欠陥を説明してくれることを本当に望んでいます。
前もって感謝します!
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によって提供される解決策は機能しますが、競合状態を回避することはできません