GIL(全局解釋器鎖)
GIL并不是Python的特性,它是在實(shí)現(xiàn)Python解析器(CPython)時所引入的一個概念,是為了實(shí)現(xiàn)不同線程對共享資源訪問的互斥,才引入了GIL
在Cpython解釋器中,同一個進(jìn)程下開啟的多線程,同一時刻只能有一個線程執(zhí)行,無法利用多核優(yōu)勢
# 多線程示例
# 代碼:兩個函數(shù)分別執(zhí)行4秒和7秒,總共應(yīng)該耗時11秒,兩個線程同時執(zhí)行時,耗時7秒
輸出結(jié)果:
多線程同時執(zhí)行耗時僅7秒
t.start()?? 啟動線程
t.join()??? 主線程等待t線程結(jié)束后才繼續(xù)執(zhí)行
不調(diào)用t.join()方法的情況: 主線程耗時0秒,直接結(jié)束,沒有等那兩個線程的函數(shù)執(zhí)行完成就結(jié)束了進(jìn)程。