Python使用事件信号进行线程同步

线程同步除了使用线程锁之外,还可以使用事件信号Event类。为什么要使用事件信号呢?其实从生活中的例子就可以懂得这个道理,比如两个人一起煮饭。一个人洗锅,一个人洗米。如果先洗米的人干活比较快,或者说比较懒,只洗一次米,洗完的米就立即倒到锅里,而另外一个还没有把锅洗干净,这时会发生什么呢?不是给洗锅的人一顿骂,就是一顿打了。因为干净的米,放到不干净的锅,那么最后的结果还是不干净的,相当于白做了工作。所以在生活中,两个一起干活时,肯定会让先洗完米的人等一下,直到洗锅的人把锅刷干净,就不会发生这样的事情了。在多线程里,也往往会遇到相同的事情。比如电脑里有一台打印机,先打印了一份A文档,还没有打印完,又让打印了一份B文档,这时打印机会不会先去打印B文档呢,如果你仔细观察一下,它是不会的。为什么可以做到这样呢?其实这里就是事件信号进行同步的结果。因为打印机知道A文档没有打印完成,所以事件信号就不会通知B文档开始打印。

    现在就来模拟打印的工作过程编写一个例子,在这里使用Event类来同步上面这种关系。通过threading.Event()可以创建一个事件管理标志,该标志(event)默认为False,event对象主要有四种方法可以调用:

    event.wait(timeout=None):调用该方法的线程会被阻塞,如果设置了timeout参数,超时后,线程会停止阻塞继续执行;

   

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值