1
我正在分析一些多線程CPython的代碼。
爲了測量執行特定代碼段所需的時間,我想強制GIL (Global Interpreter Lock)到而不是在該段的線程之間切換。如何才能做到這一點?強制GIL不要切換線程
UPDATE:
假設下面的僞代碼:
some_code_1()
make_the_interpreter_not_change_thread()
take_start_time() # time critical
code_to_profile() # time critical
take_end_time() # time critical
release_the_interpreter()
some_code_2()
我擔心的是,在「關鍵時刻」剖析時期解釋將切換線程。
查看我的問題更新。在'make_the_interpreter_not_change_thread()'中通過'sys.setcheckinterval()'放置很大數量的工作?解釋器是否改變了python虛擬指令的當前計數,或者這個新值是否會影響解釋器檢查的下一個週期,這可能會在'code_to_profile()'過程中發生? – Jonathan
@Jonathan:該函數在被調用時重置當前計數。所以用一個很大的值來調用它可以保證不會爲這些字節碼指令進行線程切換。 –