1、GIL
名稱:全局解釋器鎖。在cpython中python中一個線程對應c語言中的一個線程。GIL使得同一時刻只有一個線程運行在同一個cpu上,無法將多個線程映射到 多個cpu上,從而保證了線程在某種時刻是安全的。GIL並不會一直佔有,會根據執行的字節碼行數、時間片或io操作時釋放。非常適用io操作。
例如:
import threading var_total = 0 def add(): global var_total for var_i in range(1000000): var_total += 1 def desc(): global var_total for var_i in range(1000000): var_total -= 1 if __name__ == '__main__': var_thread1 = threading.Thread(target=add) var_thread2 = threading.Thread(target=desc) var_thread1.start() var_thread2.start() var_thread1.join() var_thread2.join() print(var_total)