Python でマルチプロセスまたはスレッド化? 質問する

Python でマルチプロセスまたはスレッド化? 質問する

私はデータのコレクションを取得し、そのコレクション内の各データに対してタスクを実行する Python アプリケーションを持っています。遅延が発生するため、タスクが完了するまでに時間がかかります。この遅延があるため、各データに対してタスクを順番に実行するのではなく、すべて並列に実行したいのです。この操作にはマルチプロセスを使用するべきでしょうか、それともスレッドを使用するべきでしょうか?

スレッドを使用しようとしましたが、問題が発生し、一部のタスクが実際には実行されないことがよくありました。

ベストアンサー1

本当に計算能力に限界がある場合は、マルチプロセッシングモジュールおそらく最も軽量なソリューションです (メモリ消費と実装の難しさの両方の点で)。

I/Oバウンドの場合は、スレッドモジュール通常は良い結果が得られます。スレッドにデータを渡すときは、スレッドセーフなストレージ (キューなど) を使用するようにしてください。または、スレッドが生成されたときにスレッドに固有の単一のデータを渡してください。

ピピパフォーマンスに重点を置いています。コンピューティング バウンド処理に役立つ機能が多数あります。また、ソフトウェア トランザクション メモリもサポートされていますが、まだ製品品質ではありません。マルチプロセス (いくつかの厄介な要件があります) よりも簡単な並列または同時メカニズムを使用できることが期待されています。

スタックレス Pythonも良いアイデアです。Stackless には、上で示したように移植性の問題があります。荷を積んでいないツバメ有望でしたが、現在は廃止されています。ピストン速度に重点を置いた別の (未完成の) Python 実装です。PyPy とは異なるアプローチを採用しており、より優れた (または単に異なる) 速度向上が得られる可能性があります。

おすすめ記事