問題タブ [multiprocessing-manager]
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 の複数のプロセス間で共有する必要があります。managers
(モジュールで)使用しようとしていますmultiprocessing
が、クラッシュします。これは、2 つのプロセス間の共有オブジェクトが 4 つのメソッドを持つ単なる数字のリストであるプロデューサー/コンシューマーのばかげた例です。
とにかく、それはいつもそのようにクラッシュし、私にこれを教えてくれます:
それで、問題は何ですか?managers
オブジェクトとそのメソッドを共有するには、これらをどのように使用すればよいですか?
python - マルチプロセッシングの manager.dict() でネストされた辞書値を更新できません
multiprocessing モジュールの manager.dict() のネストされた辞書のキーを更新しようとしていますが、更新できません。値を更新せず、エラーもスローしません。
コード:
出力:
進行中
{'abc': {'ステータス': '進行中'、'失敗': 0、'繰り返し': 5、'成功': 5}}
while ループが終了するとすぐに、d['abc']['status'] = complete になるはずです。しかし、最終的な印刷では、ステータスが「進行中」のみとして印刷されます。
python - Python マルチプロセッシング モジュール、共有多次元配列
2 つのパラメーター (k, m) を指定すると、4 次元の numpy 配列が返されるコードがあります。私の要件は、k,m < N で (k,m) の可能な値についてこの配列を計算し、それらを合計する必要があることです。 . これはシリアルで遅いので、Pythonでマルチプロセッシングモジュールを学習しようとしています。 https://docs.python.org/2/library/multiprocessing.html
基本的に、8 つのコアを使用してこれらの 4 次元配列を並列に計算し、それらをすべて加算したいと考えています。さて、問題はこれをどのように設計するかです。各配列は約 100 MB で、N は約 20 です。したがって、キューに 20**2 * 100 MB を格納することはできません。解決策は、各プロセスが結果を追加し続ける結果配列である共有メモリオブジェクトを持つことです。
multiprocessing には、共有メモリまたはサーバー プロセスを使用してこれを行うための 2 つの方法があります。どちらもマルチディム配列をサポートしていないようです。誰でも私のプログラムを実装する方法を提案できますか? 事前にthx。
python - マルチプロセッシング プールのマネージャー dict のリストを変更します
マルチプロセッシングapply_async
タスクで処理している要素のリストがあり、リスト全体をマップしたいマネージャー辞書のキーで1つずつ処理された要素を更新しています。
次のコードを試しました:
最後に、dictに空のリストを投稿するだけです。出力:
{'タスク': {'処理済みリスト': []}}
少し調べたところ、マネージャー dict 内の要素が不変になるため、更新するには新しいデータで dict 全体を再初期化する必要があることがわかりました。SO 私は次のコードを試してみましたが、奇妙なエラーが発生します。
出力:
トレースバック (最新の呼び出しが最後): ファイル "./a.py"、29 行目、p.apply_async(spammer_task (d, my_list)) ファイル "./a.py"、14 行目、spammer_task new_list = old_list. append(ele) AttributeError: 'NoneType' オブジェクトには属性 'append' がありません
どういうわけかNone
、理由がわからないリストに追加されているようです。
python - Python Multiprocessing Manager - クライアントが再接続できない
Python Manager への接続の成功/失敗を待つことができないアプリケーションを実行しています。クライアント アプリケーションは、実行中と思われるサーバーに何らかの情報を送信しようとする必要があり、失敗した場合は別の手段が取られます。問題は、サーバーがダウンしている場合は常に、接続がクライアント アプリケーションに制御を返すのに多くの時間がかかることです。他にやるべきことがあるために、接続を待つ時間を無駄にすることはできません。
中間オブジェクトが接続を担当するスキームを思いつきましたが、それは一度しか機能しません。初めて、サーバーへの接続がまだない場合、この中間オブジェクトはクライアント アプリケーションをブロックすることなく接続部分を処理するとします。なんらかの理由でサーバーがダウンして再び戻ってきた場合、それ以上機能させることはできません。
次のサーバーがあるとします。
接続を処理する中間オブジェクトは次のとおりです。
最後に、クライアント アプリケーション:
私は確かにスレッドで何か間違ったことをしていますが、それを理解することはできません. 何か案が?
python - Python マルチプロセッシング プロセスにより親がアイドル状態になる
私の質問は、こちらの質問と非常によく似ていますが、キャッチによる解決策がうまく機能しませんでした。
問題: マルチプロセッシングを使用してファイルを並列処理しています。約 97% で動作します。ただし、親プロセスが永久にアイドル状態になり、CPU 使用率が 0 と表示されることがあります。
ここに私のコードの簡略版があります
問題は、プロセスの開始を確認でき、すべてのアイテムが処理されていることを確認できることです。ただし、プロセスが再結合しない場合があります。確認すると、親プロセスしかありませんが、何かを待っているかのようにアイドル状態です。子プロセスはありませんが、print ステートメントが表示されないため、join が呼び出されたとは思いません。
私の仮説は、これは多くの壊れたフレームがあるビデオで発生するというものです。ただし、このエラーはめったに発生しないため、再現するのは少し困難です。
編集:コードは現在有効である必要があります。このエラーを再現できるファイルを探しています。