2012-04-03 10 views
1

スクリプトパートではBoost.Pythonを使用している私の(ゲーム)アプリケーションに問題があります。私は、外部のサーバーに接続していない場合、同じプロセスで実行されるクライアントスレッドとサーバースレッドを持っています。boost :: pythonと並行して2つのpythonスクリプトを実行します。

これは私の問題が発生する場所です:Pythonインタプリタは、アプリケーションをクラッシュさせるので、サーバスレッドのスクリプトと並列にクライアントスレッドのスクリプトを実行できないようです。

私の質問です:2つ(またはそれ以上)のスクリプトをPythonインタプリタで並列に実行する可能性はありますか? 私は終日検索してPy_NewInterpreterに関する多くの情報を見つけましたが、GILを使用しているので問題は解決しません。インタープリタが他のスクリプトを実行しないようにしたい/またはサーバー側。

答えて

1

今日、同じプロセスでPythonスレッドを使用する場合は、GILのやりとりを避けることはできません。

multiprocessingモジュールは、簡単にPythonプロセスを起動するためのもので、GILとやりとりすることはできません。

ラップされたC/C++関数で不要な場合は、GILを明示的にリリースすることもできます。これは、PyEval_SaveThreadPyEval_RestoreThread関数を使用して行うことができます。

+1

GIL Tiwtilingの詳細はこちらhttp://stackoverflow.com/questions/8009613/boost-python-not-supporting-parallelism/8011153#8011153 –

関連する問題