0

私は、コマンドラインでインタープリターを使用して同じPythonスクリプトを呼び出すだけのLinuxマルチコアマシンで作業しています(実際には「python script.py」のみ)。十分にマシン リソース内にいるにもかかわらず、パフォーマンスが 1 回の呼び出しよりもはるかに遅いことがわかります。これは、インスタンスがグローバル インタープリター ロック (GIL) を介してインタープリターを共有しているためだと思います。つまり、いくつかのインスタンスが「シングル コア」で実行されることになります。スクリプトの凍結された Python バイナリ バージョン ( http://wiki.python.org/moin/Freeze ) で同じことを行うと、同じことが起こりますか? バイナリは「独自のインタプリタを持っている」ので、そうではないと思いますか?

4

1 に答える 1

3

あなたの信念は間違っています。GIL はプロセスグローバルです。個別の CPython プロセスは、GIL を含め、何も共有しません。同じプロセス内のスレッドのみが、同じグローバル ロックを求めて競合します。多く見られるパフォーマンスの低下には、別の原因があります。はい、ルールは凍結された実行可能ファイル IIUC と同じです。

于 2013-04-13T13:07:40.073 に答える