1. ホーム
  2. python

[解決済み] pythonはマルチコアで動作可能か?

2023-08-06 11:37:13

質問

質問です。PythonはGILを使用しているので、同時に別々のスレッドを実行することができるのでしょうか?


情報です。

読了後 この 私は python がマルチコアプロセッサを活用することができるかどうか、かなり不確かなものになりました。Python がよくできているとして、そのような強力な能力が欠けていると考えるのは本当に奇妙な感じがします。そこで、不確かなまま、ここで質問することにしました。もし私がマルチスレッドのプログラムを書いたら、それは複数のコアで同時に実行することができるのでしょうか?

どのように解決するのですか?

答えは、「Yes, But..." 」です。

しかし、cPythonは並行処理のために通常のスレッドを使用しているときはできません。

のようなものを使うことができます。 multiprocessing , celery または mpi4py で並列作業を別プロセスに分割します。

あるいは、次のようなものを使うこともできます。 Jython または IronPython を使えば、GILを持たない別のインタプリタが使えます。

よりソフトな解決策は、重いCPUタスクのためにGILに抵触しないライブラリを使うことです、例えば numpy は GIL を保持せずに重い処理を行うことができるので、他の Python スレッドが処理することができます。 また ctypes ライブラリをこの方法で使用することもできます。

CPUバインドされた作業をしていない場合、pythonがIOを待っている間にGILを取得することはないので、GILの問題は完全に無視できます(一種の)。