上一篇文章: 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,锁将被重置为未锁定状态。不然,锁将保持已锁定状态。 只能由目前拥有锁的线程来调用此方法。