3

Pythonで記述され、Linuxマシンで実行されているアルゴのパフォーマンスをテストできるサービスをWeb上で提供したいと思います。

基本的に私がやりたいのは、非常に些細なPHPハンドラーがあることです。たとえば、ブラウザーからの要求を受け入れるstart_algo.phpがあり、phpコードにはsystem()またはpopen()(exec( " python algo.py "))pythonスクリプトを実行する新しいプロセスを発行するには、この部分で実行可能だと思います

問題は、それがWebサービスであるため、確かに同時に複数のユーザーにサービスを提供する必要があるということですが、Global Interpreter LockGILhttp://wiki.python.org/moin/GlobalInterpreterLockによってかなり混乱しています 。 'CPythonが実装されました。つまり、現在3人のユーザーがアルゴを実行している場合(つまり、3つの別々のプロセス、間違っている場合は修正してください)、特定の瞬間に、Pythonがサービスを提供しているユーザーは1人だけです。通訳と他の2人は順番を待っていますか?

よろしくお願いします

テッド

4

2 に答える 2

10

新しいプロセスを呼び出して各スクリプトを開く場合。GILに反することはありません。各プロセスは独自のインタープリターを取得するため、独自のインタープリターロックを取得します。

于 2011-09-13T16:06:57.170 に答える
7

GILはプロセスごとです。複数のpythonプロセスを開始する場合、それぞれに独自のGILがあり、この特定のプロセスのインタープリターが一度に複数のスレッドを実行するのを防ぎます。ただし、独立したプロセスを同時に実行できます。

また、1つのPythonプロセス内の複数のスレッドが順番に実行されるため(バージョンによっては、IIRCが100オペコード命令ごとに1回、または数十ミリ秒になることがよくあります)、GILが同時実行を完全に防止するわけではありませ。スレッド。

于 2011-09-13T16:08:48.933 に答える