是时候了解更多 python 中的线程了。在本教程中,我们将介绍一个重要的类,Event
类,它在 python 中用于线程同步。
创新互联服务项目包括腾冲网站建设、腾冲网站制作、腾冲网页制作以及腾冲网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,腾冲网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到腾冲省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
这个类通过生成事件用于线程间通信。
事件类对象提供了一种简单的机制,用于线程之间的通信,其中一个线程发出事件信号,而其他线程等待它。因此,当一个用于产生信号的线程产生信号时,等待的线程就会被激活。
一个内部标志被称为事件标志的事件对象使用,该标志可以使用set()
方法设置为真,并且可以使用clear()
方法重置为假。
wait()
方法阻塞一个线程,直到它正在等待的事件标志被任何其他线程设置为真..
以下是与事件对象一起使用的有用函数:
我们可以如下初始化事件对象:
import threading
are_you_coming = threading.Event()
当我们像这样初始化一个事件对象时,默认情况下内部标志被设置为假。
isSet()
方法当且仅当内部标志为真时,此方法返回真。
import threading
are_you_coming = threading.Event()
print(are_you_coming.isSet())
错误的
set()
方法当对任何事件对象调用此方法时,内部标志被设置为 true。一旦为任何事件调用set()
方法,所有等待它的线程都会被唤醒。
clear()
方法此方法将内部标志重置为 false。随后,对调用clear()
的事件调用wait()
的线程将阻塞,直到内部标志再次不为真。
wait([timeout])
方法当我们必须让任何线程等待一个事件时,我们可以这样做:在内部标志设置为 false 的事件上调用这个方法,这样做将阻塞线程,直到事件的内部标志为 true。
如果入口时内部标志为真,则线程永远不会被阻塞。否则,它将被阻止,直到另一个线程调用set()
将标志设置为真,或者直到可选超时发生。timeout 参数以秒为单位指定操作超时。
让我们有一个简单的代码示例来演示Event
类对象的用法。
在下面的代码中,我们将创建一个线程,让它等待一个由主线程生成的事件,释放第一个线程。
在上面的程序中,我们也使用了wait()
方法的timeout
属性。
当线程调用wait([timeout])
方法时,如果在接收事件对象时释放等待,则该方法返回布尔值真,否则如果由于超时而释放等待,则该方法返回假。
为了测试这一点,更改第 18 行作为参数args=(e,4)
发送的超时值,并使其小于睡眠时间,例如,将超时值设置为 2 并查看输出。
网站标题:使用事件对象的线程同步
本文来源:http://www.mswzjz.cn/qtweb/news13/104413.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能