使用事件对象的线程同步

是时候了解更多 python 中的线程了。在本教程中,我们将介绍一个重要的类,Event类,它在 python 中用于线程同步。

创新互联服务项目包括腾冲网站建设、腾冲网站制作、腾冲网页制作以及腾冲网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,腾冲网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到腾冲省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

这个类通过生成事件用于线程间通信。


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。内容未经允许不得转载,或转载时需注明来源: 贝锐智能