私は、ソケットからデータを取得して処理するPython C-エクステンションを持っています。処理中にGILを解放します。現在、私は2つのPythonスレッドを使用しています。その2つのCPUコアに90%の負荷がかかり、結果的にGILを解放するためにうまく絡み合っています。Asyncio from Python C-エクステンション
私はPython 3 asyncioでどのように同じことを達成できますか? 私は正しいPython-C-APIコマンドを見つけられず、イベントループに行って別のことをすることができます。
または、私の拡張機能がGILをリリースした場合、これは自動的にイベントループで利用可能な次のアイテムの実行をブロックしないことを意味しますか?例えば。私のCエクステンションが最初のソケットのデータを処理している間に次のソケットが読み込まれますか?これは私がどこにも見つけることができません。 私がこのように理解していることから、私はいくつかのソケットからデータを取得し、より多くのCPUコアを動作させることができました。
これは非常に良い質問ではありません。あなたはあなたのエクステンションがイベントループとどのように対話しているかを見せておく必要があります。あなたがそれを説明したように、あなたの拡張機能がイベントループと全くやり取りする必要はないとは思われません。 –
あなたがあなたのエクステンションとイベントループとしたいと思っているインタラクションを記述する擬似コードを記述できるなら、それを行う方法を記述するのはおそらく可能でしょう。 –
@SamHartmanそれもそうかもしれません。私の質問はほとんどが:私の拡張機能がGILをリリースした場合、これは自動的にeventloopで利用可能な次の項目の実行をブロックしないことを意味しますか? など。私のCエクステンションが最初のソケットのデータを処理している間に次のソケットが読み込まれますか?これは私がどこにも見つけることができません。 – Safihre