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