注: このトピックに関する私の知識が不足しているため、素朴な仮定をしている可能性があります。
ブロッキング I/O を実行する関数があるとします。この関数を n 回実行する必要があります。
(threading モジュールを使用して) n 個のスレッドを単純に生成し、それらを同時に開始する場合、multiprocessing.pool モジュールを使用するのではなく、GIL を使用して (I/O に基づいて) スレッドを管理するだけでうまくいきますか?サブプロセスを管理するには?
注: このトピックに関する私の知識が不足しているため、素朴な仮定をしている可能性があります。
ブロッキング I/O を実行する関数があるとします。この関数を n 回実行する必要があります。
(threading モジュールを使用して) n 個のスレッドを単純に生成し、それらを同時に開始する場合、multiprocessing.pool モジュールを使用するのではなく、GIL を使用して (I/O に基づいて) スレッドを管理するだけでうまくいきますか?サブプロセスを管理するには?
実装の詳細をコードのコア機能として使用するのは悪い習慣です。GIL は CPython の実装の詳細であり、他の実装には存在しません。
やりたいことができるように設計されたものを使用してください。
ここでGILはどのように関連していますか? そこから何が得られると期待していますか?
GIL を使用せずに、n 個のスレッドを生成し、それらすべてにブロッキング I/O を実行させることができます。
また、スレッドを「管理」したい場合 (たとえば、すべてに参加して、いつ終了したかがわかるようにするなど) も、明示的に行う必要があります。GILは役に立ちません。