Python 3.4 には、マルチプロセッシング/スレッディング用の異なるライブラリがいくつかあることがわかりました:マルチプロセッシングvsスレッディングvs asyncio。
しかし、どれを使用するか、または「推奨されるもの」かはわかりません。彼らは同じことをしていますか、それとも異なっていますか?もしそうなら、どれが何のために使われますか? コンピューターでマルチコアを使用するプログラムを作成したいと考えています。でも、どのライブラリを学べばいいのかわからない。
Python 3.4 には、マルチプロセッシング/スレッディング用の異なるライブラリがいくつかあることがわかりました:マルチプロセッシングvsスレッディングvs asyncio。
しかし、どれを使用するか、または「推奨されるもの」かはわかりません。彼らは同じことをしていますか、それとも異なっていますか?もしそうなら、どれが何のために使われますか? コンピューターでマルチコアを使用するプログラムを作成したいと考えています。でも、どのライブラリを学べばいいのかわからない。
これらは、(わずかに) 異なる目的および/または要件を対象としています。CPython (典型的なメインラインの Python 実装) にはまだグローバル インタープリター ロックがあるため、マルチスレッド アプリケーション (最近の並列処理を実装する標準的な方法) は最適ではありません。そのため、よりも優先されるmultiprocessing
場合threading
があります。しかし、すべての問題が [ほぼ独立した] 断片に効果的に分割されるわけではないため、大量のプロセス間通信が必要になる場合があります。そのため、一般的multiprocessing
に優先されない場合があります。threading
asyncio
(この手法は Python だけでなく、 Boost.ASIOなどの他の言語やフレームワークにもあります) は、並列コード実行を必要とせずに、多くの同時ソースからの大量の I/O 操作を効果的に処理する方法です。 . したがって、これは特定のタスクの単なる解決策 (実際には良いものです!) であり、一般的な並列処理ではありません。