Timer對象用于在稍后的某個時間執(zhí)行一個函數(shù)。
t=Timer(interval,func,args,kwargs)
創(chuàng)建定時器對象,在interval秒后運(yùn)行函數(shù)func,args和kwargs提供傳遞給func的參數(shù)和關(guān)鍵字參數(shù)。
在調(diào)用start()方法后才能啟動計(jì)定時器。
t.start():啟動定時器。
t.cancal():如果函數(shù)還未執(zhí)行,取消定時器。
原始鎖(互斥鎖)是一個同步原語,狀態(tài)有兩種:『已鎖定』、『未鎖定』。
如果狀態(tài)已經(jīng)鎖定,嘗試獲取鎖將阻塞,直到鎖被釋放為止。如果有多個線程等待獲取鎖,當(dāng)鎖被釋放時,只有一個線程獲得它,獲取順序是不定的。
lock=Lock()
創(chuàng)建新的Lock對象,初始狀態(tài)為未鎖定。
lock.acquire(blocking):獲取鎖,如果有必要,需要阻塞到釋放鎖為止。
如果blocking為false,當(dāng)無法獲取鎖時將立即返回False,如果成功獲取鎖則返回True。
lock.release():釋放一個鎖,當(dāng)鎖處于未鎖定狀態(tài)時,或者從與原本調(diào)用acquire()方法的線程的不同線程調(diào)用此方法,將會報(bào)錯。
可重入鎖是一個類似于Lock對象的同步原語,但同一個線程可以多次獲取它。
它允許擁有鎖的線程執(zhí)行嵌套的acquire()和release()操作。在這種情況下,只有最外層的Release()操作才能將鎖重置微未鎖定狀態(tài)。
rlock=RLock()
創(chuàng)建新的可重入鎖對象。
rlock.acquire(blocking):獲取鎖,如果有必要,需要阻塞到鎖釋放為止。
如果沒有線程擁有鎖,它將被鎖定,而且遞歸級別被置為1.
如果此線程已經(jīng)擁有鎖,鎖的遞歸級別加1,而且函數(shù)立即返回。
rlock.release():通過減少鎖的遞歸級別來釋放它。如果在減值后遞歸級別為0,鎖將被重置為未鎖定狀態(tài)。否則,鎖將保持已鎖定狀態(tài)。
只能由目前擁有鎖的線程來調(diào)用此方法。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com