2

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

ここで問題が発生します。アプリケーションがクラッシュするため、Python インタープリターはサーバー スレッドのスクリプトと並行してクライアント スレッドのスクリプトを実行できないようです。

私の質問は、Python インタープリターで 2 つ (またはそれ以上) のスクリプトを並行して実行する可能性はありますか? 私は一日中検索しており、Py_NewInterpreter に関する多くの情報を見つけましたが、GIL を使用しているため、これで問題は解決しません。クライアントでラグが発生するため、インタープリターが他のスクリプトの実行をロックしたくありません。またはサーバー側。

4

1 に答える 1

1

GIL現在、同じプロセスで Python スレッドを使用する場合、相互作用を避けることはできません。

multiprocessingPython プロセスを簡単に生成することを意図したモジュールを見たいと思うかもしれませんGIL

もう 1 つのオプションはGIL、ラップされた C/C++ 関数で不要な場合に明示的に解放することです。PyEval_SaveThreadこれは、およびPyEval_RestoreThread関数を使用して実行できます。

于 2012-04-03T21:56:12.877 に答える