這篇文章帶給大家的內容是關於Python線程下Timer對象、Lock對象和Rlock對象的簡單介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
#Timer物件用於在稍後的某個時間執行一個函數。
t=Timer(interval,func,args,kwargs)
建立定時器對象,在interval秒後執行函數func,args和kwargs提供傳遞給func的參數和關鍵字參數。
在呼叫start()方法後才能啟動計時器。
t.start():啟動計時器。
t.cancal():如果函數還未執行,取消定時器。
原始鎖定(互斥鎖)是同步原語,狀態有兩種:『已鎖定』、『未鎖定』。
如果狀態已經鎖定,請嘗試取得鎖定將阻塞,直到鎖定被釋放為止。如果有多個執行緒等待取得鎖,當鎖被釋放時,只有一個執行緒獲得它,取得順序是不定的。
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,鎖將被重設為未鎖定狀態。否則,鎖將保持已鎖定狀態。
只能由目前擁有鎖的執行緒來呼叫此方法。
相關推薦:
Python多線程同步Lock、RLock、Semaphore、Event實例
以上是Python線程下Timer物件、Lock物件和Rlock物件的簡單介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!