問題タブ [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 - マルチプロセッシング使用時の Django 1.7 および Python 3.4 の AppRegistryNotReady
Django のビューで、スレッド (threading.Thread のクラス) を生成します。これにより、5 つのワーカーのマルチプロセッシング プールが作成されます。はい、Celery のようなタスク キューを使用することが通常は受け入れられている方法ですが、この場合はスレッド/マルチプロセッシングが必要でした。
スレッドと各マルチプロセス ワーカーの両方が、データベース内のアイテムにアクセスします。ただし、スレッドまたはワーカーで Django モデルを呼び出すと、「django.core.exceptions.AppRegistryNotReady: モデルはまだロードされていません」という例外が発生します。
完全なスタック トレースは次のとおりです。
スタック トレースに自分のコードの一部が表示されないのは奇妙です。
Thread init で django.setup() を実行しようとしましたが、メソッドの開始時にワーカーが開始されましたが、まだ成功していません。
モデルのどの時点でも、ユーザー モデルへの外部キーを実行するという一般的な問題のように、データベースから何かを読み取ろうとしません。
編集:
django.setup を init メソッドではなく、Simulation クラスのすぐ下に置くことで、スレッドでデータベース クエリを動作させることができます。しかし、ワーカーのクエリにはまだ問題があります。
編集2:
Python の queue.Queue ファイルを変更し、django.setup() 呼び出しを get 関数に入れると、すべてがうまく機能します。ただし、これは有効な解決策ではありません。何か案は?
編集3:
PyCharm 内でテストを実行すると、この問題に関連するテストが機能します。PyCharm の外部で通常のコマンド ラインでテストを実行する (またはサーバー [django テスト サーバーまたは CherryPy] からビュー サーバーを実行する) と、上記のエラーが発生します。
役立つ場合は、GitHub の views.py へのリンクを次に示します。
今後の参考のために (バグを修正した後)、コミット b4bbbcf7 (上記のリンク) で奇妙な動作を確認できます。
python - Python プロセス プールが予想される数のプロセスを作成していない
Python のプール モジュールを使用して簡単なプログラムを作成しようとしています。これが私のコードです:
このプログラムを実行すると、作成された子プロセスごとに 1 つずつ、4 つの異なるプロセス ID が出力されることを期待していました。選択したチャンクサイズは 1 であるため、リスト内の各項目は個別のプロセスに送られます。
ただし、出力されるプロセスIDは同じです。以下の出力が得られます。
ここでどこか間違っていますか?誰でもこれに光を当てることができます。前もって感謝します。
python - Python: 2 つの関数を並行して実行する方法
これが私のプログラムの構造です:
どうすればこれを達成できますか?
python - マルチプロセッシングを使用してPythonで複数のファイルを読み取ることは意味がありますか?
マルチプロセッシングを使用して、Python のマルチプロセッシング機能を備えた一連の小さなファイルを読み取るつもりです。ただし、ディスクが回転している場合、ボトルネックは回転時間であり、複数のプロセスを使用していても、合計読み取り時間は単一プロセスの読み取りと同様であるため、これはある意味では厄介です。私が間違っている ?あなたのコメントは何ですか?
さらに、マルチプロセッシングを使用すると、ファイルの読み取りが絡み合って、これらのファイルの内容が何らかの形で歪む可能性があると思いますか?
python - ロガーはpythonマルチプロセッシングでは機能しません
Python multiprocessing を使用してテスト プログラムを作成しています。ロガーを使用して進行状況を記録しています。ただし、ロガーは機能していないようです。子プロセス内からはログまたは出力しません。何が問題なのかわかりません。ロガーを単純な print ステートメントに置き換えても役に立ちません。以下は私のコードです:
私が得る出力は以下の通りです:
"'****Inside f..******'" (関数 f 内から) はログに記録されません。マルチプロセッシングでのロギングは難しいようです:(私はPython 2.6.6を使用しています。OSはwindows-32bit/64bitです。
python - Python のプール マップ メソッドの使用時にカスタム オブジェクトを返せない
マルチプロセッシングを使用してPythonで簡単なテストプログラムを作成しようとしています。私は Pool.map() を使用しています。それに、子プロセスによって呼び出されるメソッドを渡しています。戻り値の型が python 組み込み型 (string、datetime など) の場合、正しく動作し、期待どおりの結果が得られます。ただし、カスタム クラスを戻り値の型として使用すると、プロセスがハングします。私が正しいことをしているかどうかわからないので、どんな提案でも大歓迎です。ここに私のコードがあります:
Python 2.6.6 を使用しています。OSはwindows-32bit/64bitです。
python-multiprocessing - Python multiprocessing.pool プロセスの順次実行
私は特にPythonと「マルチプロセッシング」モジュールにかなり慣れていません。ただし、24 cpu で複数のプロセス (たとえば 100) を実行するための非常に単純なスクリプトを作成することができました。ただし、プロセスが順番に実行されるのではなく、ランダムに実行されることに気付きました。プロセスを順番に実行する方法はありますか。これが私のコードです:
Python コードを実行した後、'ps -ef | grep myname'. 取得する代わりに:
私は得ています:
コマンドが順番に実行されない理由は何ですか?
python - マルチプロセッシングでプロセスを調整する方法は?
multiprocessing.Queue
複数のプロセスを並行して処理するプログラムを書いています。オーケストレーションの部分を掘り下げるほど、理解できなくなります。
私が達成したいのは、いくつかのプロセスを開始し、先に進む前にそれらすべてが完了していることを確認することです。これは の仕事のようですね.join()
。
最終的に、次のデモ スクリプト (Linux で実行) をテストしました。
私が期待したのは、関数が 3 回開始され、すぐに "hello" メッセージが出力されてからスリープすることです。それらすべてがスリープ状態になると、最終メッセージ (「終わり」) が出力されます。
私が実際に得るのはこれです:
スクリプトを実行すると、3 番目の「hello」と 2 番目の「joining」の間で待機します。
上記に従って、期待されるオーケストレーションを実現できるように、マルチプロセッシング コードをどのように設計すればよいですか?