python threading.Event()用法

这篇具有很好参考价值的文章主要介绍了python threading.Event()用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

红绿灯例子

Event的用法

import threading,time

event=threading.Event()

def lighter():
    timesec=0
    event.set()
    while True:
        if 5<timesec<=10:
            event.clear()
            print("红灯亮")
        elif timesec>10:
            event.set()
            timesec=0
        else:
            print("绿灯亮")
        time.sleep(1)
        timesec+=1

def car(name):
    while True:
        if event.is_set():
            print(f"{name}正在行驶...")
            time.sleep(1)
        else:
            print(f"{name}看红灯亮")
            event.wait()
            print(f"--{name}绿灯亮")

light=threading.Thread(target=lighter,)
light.start()
car=threading.Thread(target=car,args=('mini',))
car.start()

等同方案:文章来源地址https://www.toymoban.com/news/detail-654173.html

import threading,time

event=False  #Event

def lighter():
    timesec=0
    global event
    event=True
    while True:
        if 5<timesec<=10:
            event=False #event.clear()
            print("-红灯亮")
        else:  #可以用elif那部分 ,这放在了下面if中
            if timesec>10:
                event=True #相当于event.set()
                timesec=0
            print("-绿灯亮")
        time.sleep(1)
        timesec+=1

def car(name):
    global event
    while True:
        if event: #相当于event.is_set()
            print(f"{name}正在行驶...")
        else:
            print(f"{name}看红灯亮")
            while not event: #替换event.wait()
                if event:
                    break
                time.sleep(0.5)
            print(f"{name}看绿灯亮")
        time.sleep(1)

light=threading.Thread(target=lighter,)
light.start()
car=threading.Thread(target=car,args=('mini',))
car.start()

到了这里,关于python threading.Event()用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 多线程 -- Thread类的基本用法

    本篇重点 什么是变量捕获?? 有关线程的操作 关于线程的创建看上篇博客, 里面为线程的创建提供了5种方法 线程的中断, 就是让一个线程停下来 本质上来说, 让一个线程终止, 办法就一种, 让该线程的入口方法执行完毕!! ( return 或者 抛出异常等) 给线程规定一个结束标志位 说白

    2024年02月07日
    浏览(87)
  • JavaEE初阶:多线程 - Thread 类的基本用法

    上次我们了解了多线程的五种创建方法,今天来学习Thread的基本用法。 目录 run和start Thread常见的构造方法 Thread的几个常见属性 后台线程 是否存活 线程终止 1.使用标志位 2.使用Thread自带的标志 等待线程 首先需要理解Thread的run和start的区别: run描述了线程要做的工作,star

    2024年02月12日
    浏览(32)
  • Flink的KeyedProcessFunction基于Event Time和Process Time的定时器用法实例分析

    在Flink底层,我们可以不定义任何具体的算子(比如 map,filter,或者 window),而只是提炼出一个统一的【处理】(process)操作——它是所有转换算子的一个概括性的表达,可以自定义处理逻辑,所以这一层接口就被叫作【处理函数】(process function)。在处理函数中,我们直

    2024年01月19日
    浏览(40)
  • JavaEE--Thread 类的基本用法(不看你会后悔的嘿嘿)

    Thread类是JVM用来管理线程的一个类,换句话说,每个线程都唯一对应着一个Thread对象. 因此,认识和掌握Thread类弥足重要. 本文将从 线程创建 线程中断 线程等待 线程休眠 获取线程实例 等方面来进行具体说明. 1)线程创建 方法1:通过创建Thread类的子类并重写run () 方法 方法2:通过创

    2023年04月09日
    浏览(31)
  • web3j的基础用法-6合约的监听器事件Event和过滤器EthFilter,以及NullPointed,调用失败导致的bug解决

    本篇以Uniswap为例(https://uniswap.org/) 合约地址 :0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 (Uni) 监听合约Tranfer事件 调用代码 核心代码实现在这里 之前实验全量区块,导致请求多次失败,是由于个人RPC节点的请求和数据有限,为了测试出结果,从13763721L block到当前,结果毫秒级返

    2024年02月11日
    浏览(47)
  • Python 多线程 Event

    Event 是一个事务处理的机制,用于通知多个异步任务某个事件已经发生了。比如在交通红绿灯中多辆在行驶中的汽车可以表示成程序中的多个异步任务,红绿灯的亮起可以表示成一个通知,红灯通知这个汽车的行驶任务必须停止了,绿灯通知这个汽车的行驶任务可以继续驾驶

    2024年02月08日
    浏览(30)
  • 【Python】【进阶篇】八、Pygame的Event事件模块

    事件(Event)是 Pygame 的重要模块之一,它是构建整个游戏程序的核心,比如常用的鼠标点击、键盘敲击、游戏窗口移动、调整窗口大小、触发特定的情节、退出游戏等,这些都可以看做是“事件”。 Pygame 定义了一个专门用来处理事件的结构,即事件队列,该结构遵循遵循队

    2024年02月11日
    浏览(38)
  • Python多线程之_thread与threading模块

    Python多线程之_thread与threading模块 在Python程序中,多线程的应用程序会创建一个函数,来执行需要重复执行多次的程序代码,然后创建一个线程执行该函数。一个线程是一个应用程序单元,用于在后台并行执行多个耗时的动作。 在多线程的应用程序中,每一个线程的执行时间

    2024年02月04日
    浏览(37)
  • Python 中出现AttributeError: ‘Event‘ object has no attribute ‘key‘

    《python编程从入门到实践》中在学习外星人入侵项目中运行程序时出现报错 AttributeError: \\\'Event\\\' object has no attribute \\\'key\\\' 错误代码如下: 运行错误提示 导致错误的原因为“ #按Q键退出游戏”这部分程序中“elif event.key == pygame.K_q:”这句语句写在了与 事件类型 “event.type == pygame

    2024年02月11日
    浏览(73)
  • Python的threading模块

      为引入多线程的概念,下面是一个例子: 在等待time.sleep()的循环调用完成时,程序不能做任何事情,它只是在那里做着,直到2029年万圣节。 这是因为Python程序在默认情况下,只有一个执行线程。 在下载文件时,在设置了一次只能下载一个文件的程序中,同一时间段的下载

    2024年02月14日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包