Python之Event事件(简单教程)

Python之Event事件(简单教程)

摘要: 同进程的一样,线程的一个关键特性是每个线程都是独立运行且状态不可预测。如果程序中的其 他线程需要通过判断某个线程的状态来确定自己下一步的操作,这时线程同步问题就会变得非常棘手。为了解决这些问题,我们需要使用threading库中的Event对象。 对象包含一个可由线程设置的信号标志,它允许线程等待某些事件的发生。在 初始情况下,Event对象中的信号标志被设置为假。如果有线程等待一个Event对象, 而这个Event对象的标志为假,那么这个线程将会被一直阻塞直至该标志为真。一个线程如果将一个Event对象的信号标志设置为真,它将唤醒所有等待这个Event对象的线程。如果一个线程等待一个已经被设置为真的Event对象,那么它将忽略这个事件, 继续执行。

Event几种方法:

event.isSet():返回event的状态值;

event.wait():如果 event.isSet()==False将阻塞线程;

event.set(): 设置event的状态值为True,所有阻塞池的线程激活进入就绪状态, 等待操作系统调度;

event.clear():恢复event的状态值为False。

举例:

from threading import Thread,Event
import time

event=Event()

def light():
    print('红灯正亮着')
    time.sleep(3)
    event.set() #绿灯亮

def car(name):
    print('车%s正在等绿灯' %name)
    event.wait() #等灯绿 此时event为False,直到event.set()将其值设置为True,才会继续运行.
    print('车%s通行' %name)

if __name__ == '__main__':
    # 红绿灯
    t1=Thread(target=light)
    t1.start()
    # 车
    for i in range(10):
        t=Thread(target=car,args=(i,))
        t.start()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2128.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Pycharm更换pip默认安装源为国内安装源

    Pycharm更换pip默认安装源为国内安装源1、背景:Python里的pip是官方自带的源,国内使用pip安装的时候十分缓慢,所以最好是更换成中国国内的源地址。2、国内pip源清华:https://pypi.tuna.tsinghua.edu.cn/simple/豆瓣:http://pypi.douban.com/simple/阿里:http://mirrors.aliyun.com/pypi/simple/3、具体操作:在pychram中,依次点击“file”–>”setting”依次点击下.

    2022年8月28日
    6
  • 计算机考研调剂大概率,调剂经验分享:调剂成功概率太低了?过来人手把手教你如何调剂…[通俗易懂]

    计算机考研调剂大概率,调剂经验分享:调剂成功概率太低了?过来人手把手教你如何调剂…[通俗易懂]调剂经验分享:调剂成功概率太低了?过来人手把手教你如何调剂摘要:调剂变数太大了,所以聪明的同学一定会提前做点什么让调剂尽可能地和自己有关系,然后自己尽可能的被调剂院校看见,那么,关于调剂有什作者梦成真520次阅读2020-06-08摘要:调剂变数太大了,所以聪明的同学一定会提前做点什么让调剂尽可能地和自己有关系,然后自己尽可能的被调剂院校看见,那么,关于调剂有什么经验呢,下面看看是帮帮为大家搜集…

    2022年6月5日
    33
  • 基于thinkphp实现根据用户ip判断地理位置并提供对应天气信息的应用

    基于thinkphp实现根据用户ip判断地理位置并提供对应天气信息的应用

    2021年10月23日
    32
  • python os模块

    python os模块本篇详细讲解 pythonos 模块的使用以及功能 importos 导入 os 模块 print os name 查看操作系统 nt windows posix linux unis macos print os uname 打印电脑详细信息 不支持 windows print os environ 获取操作系统的所有环境变量 print os environ get

    2026年1月18日
    1
  • java 正则表达式语法_JAVA正则表达式语法大全

    java 正则表达式语法_JAVA正则表达式语法大全元字符描述\将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。^匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。$匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline…

    2022年7月19日
    17
  • 历史上最著名计算机病毒,似乎都成了我们的回忆[通俗易懂]

    点击上方“涛哥聊Python”,选择“星标”公众号重磅干货,第一时间送达来源:太原锦华计算机学校Windows勒索病毒似乎让全球计算机用户都闻风丧胆,不过这其实真的不算什么。然而令人始…

    2022年4月14日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号