Python 3.2では、関数を公開するAntoinePitrouによる新しいGIL実装sys.setswitchinterval
が導入されました。
これを変更すると便利なのはいつですか。その理由は何ですか。
Python 3.2では、関数を公開するAntoinePitrouによる新しいGIL実装sys.setswitchinterval
が導入されました。
これを変更すると便利なのはいつですか。その理由は何ですか。
用途の 1 つは、操作がアトミックに実行されるようにすることです。次に例を示します。
sw_interval = sys.getswitchinterval()
try:
# Setting the switch interval to a very big number to make sure that their will be no
# thread context switching while running the operations that came after.
sys.setswitchinterval(sys.maxint)
# Expressions run here will be atomic ....
finally:
sys.setswitchinterval(sw_interval)
もう 1 つのユース ケースは、コンボイ効果(または新しい GIL のパフォーマンスが低下するエッジ ケース)に直面している場合に、コードを特別に調整することです。多分 (おそらく) コンテキスト切り替え間隔を変更すると、速度が向上する可能性があります。
免責事項:上記の最初の方法はダークマジックと見なされており、まったく推奨されていません(threading.Lock
そのユースケースでは -likes が好まれます)。一般に、スレッド コンテキスト スイッチの間隔を変更することは、通常の状況では行うべきことではないと思います。Tim Peters がすでにメタクラスについて述べていることを言い換えますchanging thread context switch interval is deeper magic than 99% of people are going to need
。