2011-09-11 166 views

回答

4

的用途之一將是確保操作(S)原子運行,例如:

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) 

另一種使用情況將是你的代碼特別是當你面對的convoy effect(或任何邊緣調新的GIL表現不佳的情況)。也許(也許)更改上下文切換時間間隔可以給你更多的速度。

免責聲明:選址上面的第一種方法是考慮黑暗魔法,它是完全不推薦(該threading.Lock -likes是優選的,使用的情況下)。一般情況下,我認爲改變線程上下文切換時間間隔在一般情況下是不可行的。我將解釋蒂姆·彼得斯已經提到的元類:changing thread context switch interval is deeper magic than 99% of people are going to need

+0

當一個應用程序是IO綁定,你會增加_或_減少它嗎? –

+2

@Matt:實際上只有IO綁定線程並不會產生問題,因爲每次線程執行一個IO綁定指令時它會釋放GIL,但是在使用帶有CPU線程的IO綁定線程時可以看到問題,如本文所述問題(http://bugs.python.org/issue7946)在這種情況下(再次)可能會減少切換時間間隔可能會導致更好的性能,因爲IO綁定線程不會等待更長時間,如果他們不阻止在所有。 – mouad

+0

+1用於引用此方法中的「黑暗魔法」 –

相關問題