python之Event事件标志

Event:

Event就是一个在线程里的标志,随时可以切换

event = threading.Event()

 

设置标志位:event.set()

清除标志:event.clear()

判断是否设置标志位:event.is_set()

等待被设定:event.wait()

 

模拟红绿灯来使用一下event:

标志位设定了,代表绿灯,直接通行

标志位被清空,代表红灯,wait等待变绿灯

'''红绿灯'''
import threading,time

#event就是一个在线程里的标志,随时可以切换
event = threading.Event()

def Lighter():
    count=0
    event.set()
    while True:
        if count > 3 and count <= 6:  #30-60秒为红灯
            event.clear()   #清除,变成红灯
            print("\033[41;1m红灯亮\033[0m")
        elif count > 6:
            event.set() #变成绿灯
            count = 0   #重置计时器
        else:
            print("\033[42;1m绿灯亮\033[0m")
        time.sleep(1);
        count += 1

def Car(name):
    while True:
        if event.is_set():
            print(name,'开车')
            time.sleep(1)
        else:
            print(name,'停车')
            time.sleep(1)

light = threading.Thread(target=Lighter,)
light.start()
car = threading.Thread(target=Car,args=('宝马',))
car.start()
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python的`event`模块提供了一个简单的线程同步机制,用于多个线程之间的协调。它包含了两个类:`Event`和`Condition`。 `Event`类是最简单的线程同步机制,它包含了一个内部标志,初始值为`False`。当一个线程调用`Event.set()`方法时,标志会被设置为`True`,所有等待该事件线程都会被唤醒。当一个线程调用`Event.wait()`方法时,如果标志为`False`,该线程就会被阻塞。当标志变为`True`时,该线程就会被唤醒。 `Condition`类是基于`Event`类的一种更高级的线程同步机制。它允许线程等待一个条件的满足而不是简单的等待事件。`Condition`类包含一个锁和一个内部的`Event`对象。当一个线程调用`Condition.wait()`方法时,它会释放锁并等待条件的满足。当满足条件时,该线程会重新获得锁并继续执行。当一个线程调用`Condition.notify()`方法时,它会唤醒一个等待该条件的线程。当一个线程调用`Condition.notifyAll()`方法时,它会唤醒所有等待该条件的线程。 下面是一个简单的示例,演示了如何使用`Event`类实现线程同步: ```python import threading event = threading.Event() def worker(): print("Worker waiting") event.wait() print("Worker running") t = threading.Thread(target=worker) t.start() print("Main thread sleeping") time.sleep(2) event.set() ``` 在这个示例,我们创建了一个`Event`对象,并将其传递给一个工作线程。工作线程调用`Event.wait()`方法等待事件的发生。主线程睡眠2秒钟,然后调用`Event.set()`方法,这会唤醒工作线程并让它执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值