一個線程只能有一個進程,一個進程里面可以包括多個線程。
python在執(zhí)行的線程是主線程。
大部分計算機中的應用程序的執(zhí)行,一般都是并發(fā)執(zhí)行機制的多任務處理機制
并發(fā)就是 同時接到多個任務,同時執(zhí)行多個任務,但是在某一個時間段只執(zhí)行一個任務
cpython官方解釋器內(nèi)置gil 全局解釋器鎖 同一時間只能執(zhí)行一個線程
對于新手來說 一般使用 threading模塊
join:線程的 join 狀態(tài)是獨占模式,當前線程獨占 CPU 運行單元,
必須等待當前線程執(zhí)行完成或者超時之后,才能運行其他線程
python 中提供了兩種線程鎖的操作
同步鎖/互斥鎖:Lock
可重用鎖:RLock
鎖的操作主要是獲取鎖和釋放鎖兩種
acquire() 獲取鎖,上鎖,鎖定
release() 釋放鎖,開鎖,解鎖
線程鎖固然功能強大,可以管理多個線程之間的共享數(shù)據(jù)問題
但是同時它的強大也帶來了比較糾結(jié)的問題,需要開發(fā)人員對于鎖定的數(shù)據(jù)有一個良好的認
知,否則特別容易造成死鎖的現(xiàn)象
碰到死鎖并不是程序出錯 可以嘗試使用 可重用鎖