私は単純な python アプリケーションを作成してワーカー キューを実装しようとしましたが、スレッドについて見つけたすべての Web ページにランダムな男がコメントしています。Python スレッドを使用しないでください。Python スレッドはどうなっていますか? 使用できますか? はいの場合、どのライブラリですか?標準のもので十分ですか?
3 に答える
Python のスレッドは完全に実行可能であり、多くのタスクに役立ちます。これらはネイティブ OS スレッドで実装されているため、ブロッキング システム コールを実行し、同時に "実行" し続けることができます (別のスレッドでブロッキング syscall を呼び出すことにより)。これは、同時に複数のことを実行する必要があるプログラム (つまり、GUI やその他のイベント ループ) に非常に役立ち、IO バウンド タスク (Web スクレイピングなど) のパフォーマンスを向上させることさえできます。
ただし、グローバル インタープリター ロックにより、Python インタープリターが実際に1 つ以上のスレッドを同時に実行することができなくなります。CPU を集中的に使用するコードを複数の CPU コアにスレッドで分散させ、この方法でパフォーマンスを向上させることを期待している場合は、対象外です。幸運。ただし、multiprocessing
モジュールを使用すると、スレッドではなくプロセスthreading
を使用して作業を分散し、同様のインターフェースを提供します。
また、C 拡張機能を GIL にバインドする必要はなく、多くの拡張機能が GIL をリリースしているため、C 拡張機能はスレッドを使用して複数のコアを使用できることも付け加えておきます。
したがって、それはすべて、正確に何をする必要があるかによって異なります。
- スレッドを使用する必要はありません。コードの95%はスレッドを必要としません。
- はい、Pythonスレッドは完全に有効です。オペレーティングシステムのネイティブスレッドを介して実装されます。
- 標準ライブラリ
threading
モジュールを使用してください、それは素晴らしいです。
GILは、そのトピックに関する情報を提供する必要があります。