python中多線程和多進程

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章