0

注: このトピックに関する私の知識が不足しているため、素朴な仮定をしている可能性があります。

ブロッキング I/O を実行する関数があるとします。この関数を n 回実行する必要があります。

(threading モジュールを使用して) n 個のスレッドを単純に生成し、それらを同時に開始する場合、multiprocessing.pool モジュールを使用するのではなく、GIL を使用して (I/O に基づいて) スレッドを管理するだけでうまくいきますか?サブプロセスを管理するには?

4

2 に答える 2

4

実装の詳細をコードのコア機能として使用するのは悪い習慣です。GIL は CPython の実装の詳細であり、他の実装には存在しません。

やりたいことができるように設計されたものを使用してください。

于 2012-06-08T19:46:48.193 に答える
0

ここでGILはどのように関連していますか? そこから何が得られると期待していますか?

GIL を使用せずに、n 個のスレッドを生成し、それらすべてにブロッキング I/O を実行させることができます。

また、スレッドを「管理」したい場合 (たとえば、すべてに参加して、いつ終了したかがわかるようにするなど) も、明示的に行う必要があります。GILは役に立ちません。

于 2012-06-08T22:20:45.017 に答える