この場合は例外を送出しません。利用可能な高レベル関数です。PyEval_AcquireLock()¶GILを獲得します。ロックは前もって作成されていなければなりません。この関数を呼び出したスレッドがすでにロックを獲得している場合、デッドロックに陥ります。この関数は現在のスレッドの状態を更新しません。PyEval_ReleaseLock()¶GILを解放します。ロックは前もって作成されていなければなりません。この関数は現在のスレッドの状態を更新しません。インタプリタは1つだけですが、いくつかの場合に同一プロセス内、あるいは同一スレッド内で、複数の独立したインタプリタを作成する必要があります。サブインタプリタはこれを可能にします。関数を使ってサブインタプリタを切り替えることができます。コードの実行環境です。サブインタプリタ毎に別個のものになります。(とはいえ、これらのストリームは根底にある同じファイル記述子を参照しています)。コピーをしまい込んでおきます。関数は呼び出されません。互いのインタプリタ下にある開かれたファイルに影響を及ぼせてしまいます。グローバル変数を利用している場合や、拡張モジュールが初期化後に自身のモジュール辞書を操作する場合には特にそうです。ユーザ定義関数、メソッド、インスタンスおよびクラスをサブインタプリタをサブインタプリタ間で共有しないように十分注意してください。インタプリタのロード済みモジュール辞書に影響を及ぼす場合があるからです。組み合わせるのが難しいことにも注意してください。これらのAPIはPythonのスレッド状態とOSレベルスレッドが1対1で対応していることを前提にしていて、サブインタプリタが存在するとその前提が崩れるからです。呼び出しのペアの間では、サブインタプリタの切り替えを行わないことを強く推奨します。Pythonコードを実行している拡張モジュールはサブインタプリタを使うと壊れる可能性があります。非同期通知¶インタプリタのメインスレッドに非同期な通知を行うために提供されている仕組みです。ポインタ引数という形態を取ります。*arg)¶インタプリタのメインスレッドから関数が呼び出される予定を組みます。メインスレッドの呼び出しキューに詰められます。引数として呼び出されます。返し例外をセットしなければいけません。他の非同期通知を行うために、さらに割り込まれることはありませんが、グローバルインタプリタロックが解放された場合は、スレッドの切り替えによって割り込まれる可能性が残っています。この関数は実行するのに現在のスレッド状態を必要とせず、グローバルインタプリタロックも必要としません。警告これは、非常に特別な場合にのみ役立つ、低レベルな関数です。可能な限り早く呼び出される保証はありません。システムコールが返ってくるまで呼び出されないでしょう。