首頁  >  文章  >  後端開發  >  Python線程下Timer物件、Lock物件和Rlock物件的簡單介紹

Python線程下Timer物件、Lock物件和Rlock物件的簡單介紹

不言
不言原創
2018-09-11 16:38:341811瀏覽

這篇文章帶給大家的內容是關於Python線程下Timer對象、Lock對象和Rlock對象的簡單介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

Timer物件、Lock物件、Rlock物件

Timer物件

#Timer物件用於在稍後的某個時間執行一個函數。

語法:
t=Timer(interval,func,args,kwargs)

建立定時器對象,在interval秒後執行函數func,args和kwargs提供傳遞給func的參數和關鍵字參數。
在呼叫start()方法後才能啟動計時器。

常用方法:

t.start():啟動計時器。
t.cancal():如果函數還未執行,取消定時器。

Lock物件

原始鎖定(互斥鎖)是同步原語,狀態有兩種:『已鎖定』、『未鎖定』。

如果狀態已經鎖定,請嘗試取得鎖定將阻塞,直到鎖定被釋放為止。如果有多個執行緒等待取得鎖,當鎖被釋放時,只有一個執行緒獲得它,取得順序是不定的。

語法:
lock=Lock()

建立新的Lock對象,初始狀態為未鎖定。

常用方法:

lock.acquire(blocking):取得鎖,如果有必要,需要阻塞到釋放鎖為止。
如果blocking為false,當無法取得鎖定時將立即傳回False,如果成功取得鎖定則傳回True。

lock.release():釋放一個鎖,當鎖處於未鎖定狀態時,或從與原本呼叫acquire()方法的執行緒的不同執行緒呼叫此方法,將會報錯。

Rlock物件

可重入鎖定是一個類似Lock物件的同步原語,但同一個執行緒可以多次取得它。

它允許擁有鎖定的執行緒執行嵌套的acquire()和release()運算。在這種情況下,只有最外層的Release()操作才能將鎖定重設微未鎖定狀態。

語法:
rlock=RLock()

建立新的可重入鎖定物件。

常用方法:

rlock.acquire(blocking):取得鎖,如果有必要,需要阻塞到鎖定釋放為止。
如果沒有執行緒擁有鎖,它將被鎖定,而且遞歸等級被置為1.
如果此執行緒已經擁有鎖,鎖的遞歸等級加1,而且函數立即傳回。

rlock.release():透過減少鎖的遞迴層級來釋放它。如果在減值後遞歸等級為0,鎖將被重設為未鎖定狀態。否則,鎖將保持已鎖定狀態。
只能由目前擁有鎖的執行緒來呼叫此方法。

相關推薦:

##Python物件導向程式設計中的類別和物件學習教學

Python多線程同步Lock、RLock、Semaphore、Event實例

以上是Python線程下Timer物件、Lock物件和Rlock物件的簡單介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn