python线程间通信方法之Event
最近写程序要用到线程间通信,在网上搜了些资料,测试了一下代码,在这里总结一下。
Python实现线程间通信有几种方法,在这里介绍Event对象。
Event对象实现了简单的线程通信机制,它提供了设置信号、清除信号、等待等用于实现线程间的通信。
1.设置信号
使用Event对象的set()方法可以设置Event对象内部的信号标志为真。Event对象提供了isSet()方法来判断其内部信号标志的状态。当使用Event对象的set()方法后,isSet()方法返回真。
2.清除信号
使用Event对象的clear()方法可以清除Event对象内部的信号标志,即将其设置为假。当使用Event对象的clear()方法后,isSet()方法返回假。
3.等待
Event对象wait的wait()方法只有在其内部信号为真时才会很快地执行完成并返回。当Event对象的内部信号标志为假时,则wait()方法一直等到其为真时才返回。另外还可以向wait()方法传递参数,以设定最长等待时间。
测试代码如下:
from threading import *
event1 = Event()
event2 = Event()
def test1():
for i in range(5):
event1.wait()
print currentThread().name, i
event1.clear()
event2.set()
def test2():
for i in range(5):
event2.wait()
print currentThread().name, i
event2.clear()
event1.set()
Thread(target = test1).start()
Thread(target = test2).start()
event1.set()
运行代码结果为:
================================
>>>
>>> Thread-1 0
Thread-2 0
Thread-1 1
Thread-2 1
Thread-1 2
Thread-2 2
Thread-1 3
Thread-2 3
Thread-1 4
Thread-2 4
python线程间通信方法之Event相关推荐
- python线程间通信_python多线程之事件触发(线程间通信)
执行结果: 那么,通过分析执行结果来看,您已经体会到了其中的秘密.... 再脑补一下: Python提供了Event对象用于线程间通信,它是由线程设置的信号标志,如果信号标志位真,则其他线程等待直到信 ...
- python线程间通信
""" 线程通信方法: 利用同步互斥机制(都是对共享资源的操作)多个线程对共享资源的操作代码称为临界区同步是一种协作关系,未完成操作,多进程或者线程之间形成一种协调,按照 ...
- 为什么重新new两个线程线程号相同_面试官每次问我关于线程间通信方法,我都回答的很糟糕...
线程的生命周期 废话不多写.首先我们先回顾回顾,理解下线程的生命周期,以及不同的阶段的区别: 新建状态(NEW) 当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配 ...
- python 线程间通信之Condition, Queue
Event 和 Condition 是threading模块原生提供的模块,原理简单,功能单一,它能发送 True 和 False 的指令,所以只能适用于某些简单的场景中. 而Queue则是比较高级的 ...
- python 线程通信 会涉及到拷贝吗_Python如何实现线程间通信
问题 你的程序中有多个线程,你需要在这些线程之间安全地交换信息或数据 解决方案 从一个线程向另一个线程发送数据最安全的方式可能就是使用 queue 库中的队列了.创建一个被多个线程共享的 Queue ...
- Python中的线程间通信
Python中的线程间通信 文章目录 Python中的线程间通信 1.Queue 2.同步机制 1.Event 2.Semaphore(信号量) 3.Lock(锁) 4.RLock(可重入锁) 5.C ...
- 线程间通信的三种方法 (转)
http://www.cnblogs.com/puxidun/archive/2009/12/06/1618142.html 线程间通信的三种方法 多线程通信的方法主要有以下三种: 1.全局变量 进 ...
- android线程间通信的几种方法_Android 技能图谱学习路线
Java基础 Java Object类方法 HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理 HashMap 和 HashTable 区别 HashCode 作用,如何重载hashC ...
- [Python]线程实例化;互斥锁;线程间通信
目录 1.使用threading创建线程 2.线程锁(互斥锁) 线程间通信 ----------到此,结束------------ 图穷匕见 1.使用threading创建线程 threading模块 ...
最新文章
- Chainlink平台预言机
- 解决log4net独占日志文件的问题以及 log4net的各种输出配置(Appender)
- 004-hadoop家族概述
- android文件读写
- 【原创】关于java中的lock
- 安卓手机浏览器排行_安卓手机性价比排行:小米10至尊纪念版仅排第三
- php 控制 打印机 打印尺寸_打破常规尺寸,得实推出宽幅条码标签单据打印机新品...
- VS2010插件 - NuGet
- 模型总结:最优化模型
- spring注解原理
- 中英文双标题latex
- 2021-1-16-JavaGuide老哥的操作系统常见问题总结 自己按照理解,综合了王道考研的视频,对内容进行了修改,增加了内容,以便于自己理解。这份材料不是背的,而是让自己去理解的。
- EMW3080+STC15轻松实现设备上云2(阿里云物联网平台、智能生活开放平台)
- 鲁棒局部均值分解 (RLMD)附Matlab代码
- 极客时间 - Vim学习
- 项目经理职业生涯的五道坎
- HDMI采集卡芯片方案
- css渐变描边视频,CSS制作渐变描边等文字特效
- Learning Generalisable Omni-Scale Representations for Person Re-Identification
- 成为云计算产品经理的前提
热门文章
- go操作redis之go-redis,python操作redis之redis
- CTF---Web---SQL注入---04---F12network+XXF伪造+sqlmap跑文件
- [九度][何海涛] 矩形覆盖
- 爱因斯坦个人不是神仙
- python随机点名程序 图形化_python写一个随机点名软件,python随机点名,最近有个随机点名软件...
- visio2019中文版(64位)
- office软件的发展前景_2020年中国远程办公软件行业市场现状及发展前景分析
- LLVM中的String相关
- json,反射实现对象转json
- “速课小龙”项目冲刺2