4

単一スレッドのアプリケーションを作業スレッドの数に分割したいと考えています。1 つだけ質問があります。このアクションのパフォーマンスはどうですか? GIL が Python が一度に複数のスレッドを実行するのを防いでいる場合、利益はありますか?

別のポイント (c/c++ の観点から) - とにかく、各スレッドは排他的にしか実行できないことがわかっているため、Python インタープリターよりも下位レベルでは同じ制限があります。

要約: Python スレッドは、タスク切り替えの一部で「ネイティブ」スレッドよりも効率が低くなりますか?

4

1 に答える 1

6

GIL について心配する必要はありません。プログラムが行うことの種類 (計算と I/O) に応じて、パフォーマンス特性が異なります。プログラムが I/O バウンドの場合、おそらく GIL にまったく気付かないでしょう。

もう 1 つの方法は、各プロセスが独自の Python ランタイムを備えた独自の OS プロセスで実行されるマルチプロセッシングモジュールを使用することです。このアプローチでは、複数のコアを最大限に活用できます。また、共有メモリへのアクセスの同期について心配する必要がないため、通常はより安全です。

于 2012-06-30T21:28:50.657 に答える