[解決済み] Pythonの単純なループを並列化するには?
2022-03-24 05:25:50
質問
些細な質問かもしれませんが、pythonで以下のループを並列化するにはどうしたらよいでしょうか?
# setup output lists
output1 = list()
output2 = list()
output3 = list()
for j in range(0, 10):
# calc individual parameter value
parameter = j * offset
# call the calculation
out1, out2, out3 = calc_stuff(parameter = parameter)
# put results into correct output list
output1.append(out1)
output2.append(out2)
output3.append(out3)
Pythonで単一スレッドを開始する方法は知っていますが、結果を "collect"する方法がわかりません。
複数プロセスでも構いませんし、このケースで最も簡単なものであれば何でも構いません。現在Linuxを使用していますが、WindowsやMacでも動作するはずです。
このコードを並列化する最も簡単な方法は何でしょうか?
どのように解決するのですか?
CPython で複数のスレッドを使用すると、グローバルインタープリタロック (GIL) のため、純粋な Python コードではパフォーマンスが向上しません。 私は
multiprocessing
モジュールで代用できます。
pool = multiprocessing.Pool(4)
out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))
インタラクティブ・インタープリターでは動作しないことに注意してください。
GILにまつわるいつものFUDを避けるために:とにかくこの例でスレッドを使うことには何の利点もありません。 あなたは 欲しい を使うことで、多くの問題を回避できるからです。
関連
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
ピロウズ画像色処理の具体的な活用方法
-
Python カメの描画コマンドとその例
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
Python入門 openを使ったファイルの読み書きの方法
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】並行プログラミングと並列プログラミングの違いは何ですか?
-
[解決済み] マルチプロセッシング : tqdm を使ってプログレスバーを表示する