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