Python–Event

事件Event:

同进程的一样,线程的一个关键特性是每个线程都是独立运行且状态不可预测。如果程序中的其他线程需要通过判断某个线程的状态来确定自己下一步的操作,这时线程同步问题就会变得非常棘手。为了解决这些问题,我们需要使用threading库中的Event对象。 对象包含一个可由线程设置的信号标志,它允许线程等待某些事件的发生。

在初始情况下,Event对象中的信号标志被设置为false。如果有线程等待一个Event对象, 而这个Event对象的标志为false,那么这个线程将会被一直阻塞直至该标志为真。一个线程如果将一个Event对象的信号标志设置为真,它将唤醒所有等待这个Event对象的线程。如果一个线程等待一个已经被设置为真的Event对象,那么它将忽略这个事件,继续执行。

Event方法:

1、event.isSet():当且仅当内部标志为 True时返回 True

2、event.set():将内部标志设置为 True。所有等待它成为 True的线程都被唤醒。当标志保持在 True的状态时,线程调用 wait()是不会阻塞的。

3、event.clear():将内部标志重置为 False。随后,调用 wait()的线程将阻塞,直到另一个线程调用 set()将内部标志重新设置为 True

4、event.wait():阻塞直到内部标志为真。如果内部标志在 wait()方法调用时为 True,则立即返回。否则,则阻塞,直到另一个线程调用 set()将标志设置为 True,或发生超时。

红绿灯示例:

执行结果:

Original: https://www.cnblogs.com/sunnytomorrow/p/13529061.html
Author: NorthFeng
Title: Python–Event

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590699/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MYSQL(进阶篇)——一篇文章带你深入掌握MYSQL

    MYSQL(进阶篇)——一篇文章带你深入掌握MYSQL 我们在上篇文章中已经学习了MYSQL的基本语法和概念 在这篇文章中我们将讲解底层结构和一些新的语法帮助你更好的运用MYSQL…

    数据库 2023年6月14日
    096
  • 项目要实现多数据源动态切换,咋搞?

    文章首发于公众号:BiggerBoy 原名:编程大道 在做项目的时候,几乎都会用到数据库,很多时候就只连一个数据库,但是有时候我们需要一个项目操作多个数据库,不同的业务功能产生的数…

    数据库 2023年6月11日
    0108
  • Linux系统下nginx的安装与卸载

    1.1 安装 准备依赖环境 1.安装 gcc 依赖库 yum install gcc-c++ 2.安装 PCRE pcre-devel 依赖库 yum install -y pcr…

    数据库 2023年6月11日
    087
  • 23种设计模式之命令模式

    文章目录 概述 命令模式的优缺点 命令模式的应用场景 命令模式的结构和实现 * 模式的结构 模式的实现 总结 ; 概述 命令模式(Command Pattern)是一种数据驱动的设…

    数据库 2023年6月6日
    0124
  • Ansible简介

    Ansible 是一种常用的自动运维化工具,基于 python 开发,分布式,无需客户端,轻量级,配置语言采用 YAML。 模块化:调用特定的模块,完成特殊的任务。 2.Param…

    数据库 2023年6月14日
    0113
  • UniApp文件上传(SpringBoot+Minio)

    UniApp文件上传(SpringBoot+Minio) 一、Uni文件上传 (1)、文件上传的问题 UniApp文件上传文档 uni.uploadFile({ url: ‘htt…

    数据库 2023年6月6日
    087
  • Redis-内存淘汰策略

    策略分类 内存写满了怎么办?Redis提供了以下几种内存淘汰的策略: No eviction 不淘汰数据 即,内存写满后,再有写请求时,Redis直接返回错误,不会提供服务。这也是…

    数据库 2023年6月11日
    081
  • 多商户商城系统功能拆解28讲-平台端营销-消费奖励

    多商户商城系统,也称为B2B2C(BBC)平台电商模式多商家商城系统。可以快速帮助企业搭建类似拼多多/京东/天猫/淘宝的综合商城。 多商户商城系统支持商家入驻加盟,同时满足平台自营…

    数据库 2023年6月14日
    089
  • MySQL 数据备份与恢复

    数据备份 使用 mysqldump 命令可以将数据库中的数据备份成一个文本文件,表的结构和数据以 SQL 的形式将存储生成的文本文件 mysqldump -u username -…

    数据库 2023年5月24日
    0121
  • Javaweb08-Ajax项目-分页条件查询 + 增删改

    1、登录 欢迎登录课工场KH96动漫管理系统 用户名: 用户密码: 欢迎登录课工场KH96动漫管理系统 用户名: 用户密码: $(function(){ //使用jQuery的Aj…

    数据库 2023年6月16日
    0106
  • [Linux]如何将一个目录添加至环境变量

    全局环境变量有两个目录,其中 /etc/profile 仅初始化登陆 shell 的环境变量 /etc/bash.bashrc 仅初始化交互 shell 为了在各种终端中使用,这里…

    数据库 2023年6月16日
    086
  • Centos7安装Docker

    一、docker运行流程 举个例子你想使用MySQL镜像,那么执行docker pull 下载镜像的时候 首先它会在本地仓库进行运行,如果本地仓库有你想要的MySQL镜像 那么它会…

    数据库 2023年6月14日
    0113
  • 注解

    注解概述 从 JDK5 开始,Java 增加对 元数据的支持,也就是注解,注解与注释是有一定区别的,可以把注解理解…

    数据库 2023年6月15日
    095
  • Servlet中跨域问题详解

    一、什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。 浏览器从一个域名的网页去请求另一个域名的资源时…

    数据库 2023年6月14日
    095
  • Dapper.FastCRUD与Dapper中的CustomPropertyTypeMap冲突

    在使用Dapper.NET时,由于生成的实体的属性与数据库表字段不同(如表字段叫USER_NAME,生成的对应的实体属性则为UserName)。 这时需要使用Dapper中的Cus…

    数据库 2023年6月14日
    096
  • Java面试题(二)–MySQL

    1 存储引擎 1、简单描述一个Mysql的内部结构? MySQL的基本架构示意图:大体来说,MySQL可以分为 server层和 存储引擎层两部分。 ① server层包括连接器、…

    数据库 2023年5月24日
    091
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球