【跟我學Python】第四章. Python多執行緒程式設計
在Python中我們主要是通過thread和 threading這兩個模組來實現的,其中Python的threading模組是對thread做了一些包裝的,可以更加方便的被使用,所以我們使用 threading模組實現多執行緒程式設計。
Thread 執行緒類,用的最多的一個類,可以指定執行緒函式執行或者繼承自它都可以實現子執行緒功能;
Timer與Thread類似,但要等待一段時間後才開始執行;
Lock 鎖原語,這個我們可以對全域性變數互斥時使用;
RLock 可重入鎖,使單執行緒可以再次獲得已經獲得的鎖;
Condition 條件變數,能讓一個執行緒停下來,等待其他執行緒滿足某個“條件”;
Event 通用的條件變數。多個執行緒可以等待某個事件發生,在事件發生後,所有的執行緒都被啟用;
Semaphore為等待鎖的執行緒提供一個類似“等候室”的結構;
BoundedSemaphore 與semaphore類似,但不允許超過初始值;
Queue:實現了多生產者(Producer)、多消費者(Consumer)的佇列,支援鎖原語,能夠在多個執行緒之間提供很好的同步支援。
setDaemon(self, daemonic) 把執行緒的daemon標誌設為daemonic
Thread類:主要的執行緒類,可以建立程式例項。
getName(self) 返回執行緒的名字
isAlive(self) 布林標誌,表示這個執行緒是否還在執行中
isDaemon(self) 返回執行緒的daemon標誌
join(self, timeout=None) 程式掛起,直到執行緒結束,如果給出timeout,則最多阻塞timeout秒
run(self) 定義執行緒的功能函式
setName(self, name) 設定執行緒的名字
start(self) 開始執行緒執行
Queue類
Queue佇列
LifoQueue後入先出(LIFO)佇列
PriorityQueue 優先佇列
接下來,我們用一個一個示例來展示threading的各個功能,包括但不限於兩種方式起執行緒、threading.Thread類的重要函式、使用Lock互斥及RLock實現重入鎖、使用Condition實現生產者和消費者模型、使用Event和Semaphore多執行緒通訊。