资讯专栏INFORMATION COLUMN

Python线程专题4:Timer对象、Lock对象、Rlock对象

Edison / 3097人阅读

摘要:语法创建定时器对象,在秒后运行函数,和提供传递给的参数和关键字参数。在调用方法后才能启动计定时器。如果函数还未执行,取消定时器。否则,锁将保持已锁定状态。

上一篇文章:Python线程专题3:thread对象
下一篇文章:Python线程专题5:信号量与有边界的信号量
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,锁将被重置为未锁定状态。否则,锁将保持已锁定状态。
只能由目前拥有锁的线程来调用此方法。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42392.html

相关文章

  • Python线程专题5:信号量与有边界的信号量

    摘要:有边界的信号量语法创建一个新的有边界信号量。是计数器的初始值,如果忽略,将默认为信号量与有边界的信号量的区别的工作方式与完全相同,但操作的次数不能超过的操作次数。信号量与互斥锁的微妙差别信号量可用于发送信号。 上一篇文章:Python线程专题4:Timer对象、Lock对象、Rlock对象下一篇文章:Python线程专题6:事件 信号量与有边界的信号量 信号量是一个基于计数器的同步原...

    Dionysus_go 评论0 收藏0
  • Python线程专题纵览篇

    摘要:上一篇文章进程专题完结篇多进程处理的一般建议下一篇文章线程专题多线程使用的必要性进程线程进程能够完成多任务,比如在一个电脑上可以运行多个软件。由于占用资源少,也使得多线程程序并发比较高。 上一篇文章:Python进程专题完结篇:多进程处理的一般建议下一篇文章:Python线程专题1:多线程使用的必要性 进程VS线程 进程:能够完成多任务,比如在一个电脑上可以运行多个软件。线程:也能够...

    张红新 评论0 收藏0
  • Python线程专题3:thread对象

    摘要:上一篇文章线程专题多线程共享全局变量下一篇文章线程专题对象对象对象对象类用于表示单独的控制线程。线程启动时将调用此方法。阻塞线程,等待直到线程终止或者出现超时为止。当不存在任何任何活动的非后台进程时,整个程序会退出。 上一篇文章:Python线程专题2:多线程共享全局变量下一篇文章:Python线程专题4:Timer对象、Lock对象、Rlock对象 Thread对象 Thread类...

    EdwardUp 评论0 收藏0
  • Python线程专题7:条件变量

    摘要:上一篇文章线程专题事件下一篇文章线程专题使用锁的注意事项条件变量时构建在另一个锁上的同步原语,当需要线程关注特定的状态变化或事件发生时将使用这个锁。 上一篇文章:Python线程专题6:事件下一篇文章:Python线程专题8:使用锁的注意事项 条件变量时构建在另一个锁上的同步原语,当需要线程关注特定的状态变化或事件发生时将使用这个锁。典型的用法是生产者与消费者问题,其中一个线程生产的...

    Genng 评论0 收藏0
  • Python进程专题7:托管对象

    摘要:连接带远程管理器对象,该对象的地址在构造函数中支出。在当前进程中运行管理器服务器。启动一个单的子进程,并在该子进程中启动管理器服务器。如果无法序列号对象将引发异常。 上一篇文章:Python进程专题6:共享数据与同步下一篇文章:Python进程专题8:分布集群的消息传递 进程不支持共享对象,上面描述的创建共享值和数组,但都是指定的特殊类型,对高级的Python对象(如:字典、列表、用...

    DevYK 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<