15

Python 3.2では、関数を公開するAntoinePitrouによる新しいGIL実装sys.setswitchintervalが導入されました。

これを変更すると便利なのはいつですか。その理由は何ですか。

4

2 に答える 2

5

用途の 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

于 2011-09-11T10:31:22.547 に答える