上一篇文章: Python線程專題3:thread對象
下一篇文章: Python線程專題5:信號量與有邊界的信號量
Timer對象用於在稍後的某個時間執行一個函數。
t=Timer(interval,func,args,kwargs) 建立定時器對象,在interval秒後運行函數func,args和kwargs提供傳遞給func的參數和關鍵字參數。 在調用start()方法後才能啓動計定時器。
t.start():啓動定時器。 t.cancal():若是函數還未執行,取消定時器。
原始鎖(互斥鎖)是一個同步原語,狀態有兩種:『已鎖定』、『未鎖定』。若是狀態已經鎖定,嘗試獲取鎖將阻塞,直到鎖被釋放爲止。若是有多個線程等待獲取鎖,當鎖被釋放時,只有一個線程得到它,獲取順序是不定的。segmentfault
lock=Lock() 建立新的Lock對象,初始狀態爲未鎖定。
lock.acquire(blocking):獲取鎖,若是有必要,須要阻塞到釋放鎖爲止。 若是blocking爲false,當沒法獲取鎖時將當即返回False,若是成功獲取鎖則返回True。 lock.release():釋放一個鎖,當鎖處於未鎖定狀態時,或者從與本來調用acquire()方法的線程的不一樣線程調用此方法,將會報錯。
可重入鎖是一個相似於Lock對象的同步原語,但同一個線程能夠屢次獲取它。它容許擁有鎖的線程執行嵌套的acquire()和release()操做。在這種狀況下,只有最外層的Release()操做才能將鎖重置微未鎖定狀態。函數
rlock=RLock() 建立新的可重入鎖對象。
rlock.acquire(blocking):獲取鎖,若是有必要,須要阻塞到鎖釋放爲止。 若是沒有線程擁有鎖,它將被鎖定,並且遞歸級別被置爲1. 若是此線程已經擁有鎖,鎖的遞歸級別加1,並且函數當即返回。 rlock.release():經過減小鎖的遞歸級別來釋放它。若是在減值後遞歸級別爲0,鎖將被重置爲未鎖定狀態。不然,鎖將保持已鎖定狀態。 只能由目前擁有鎖的線程來調用此方法。