http://blog.sina.com.cn/s/blog_4b5039210100exlg.html
个人感觉这个好像是线程同步用的,如果想要通信的话直接传变量也是可以的
<wbr><wbr><wbr>Python提供了Event对象用于线程间通信,它是由线程设置的信号标志,如果信号标志位真,则其他线程等待直到信号接触。</wbr></wbr></wbr>
<wbr><wbr>Event对象实现了简单的线程通信机制,它提供了设置信号,清楚信号,等待等用于实现线程间的通信。</wbr></wbr>
<wbr><wbr>1 设置信号</wbr></wbr>
<wbr><wbr><wbr>使用Event的set()方法可以设置Event对象内部的信号标志为真。Event对象提供了isSet()方法来判断其内部信号标志的状态。当使用event对象的set()方法后,isSet()方法返回真</wbr></wbr></wbr>
<wbr><wbr>2 清除信号</wbr></wbr>
<wbr><wbr>使用Event对象的clear()方法可以清除Event对象内部的信号标志,即将其设为假,当使用Event的clear方法后,isSet()方法返回假</wbr></wbr>
<wbr><wbr>3 等待</wbr></wbr>
<wbr><wbr>Event对象wait的方法只有在内部信号为真的时候才会很快的执行并完成返回。当Event对象的内部信号标志位假时,则wait方法一直等待到其为真时才返回。</wbr></wbr>
<wbr></wbr>
下面看个例子
import threading
<wbr></wbr>
class mythread(threading.Thread):
<wbr><wbr><wbr>def __init__(self,threadname):</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>threading.Thread.__init__(self,name=threadname)</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr>def run(self):</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>global event</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>if event.isSet():</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>event.clear()</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>event.wait()</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>print self.getName()</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>else:</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>print self.getName()</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>event.set()</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
event=threading.Event()
event.set()
t1=[]
for i in range(10):
<wbr><wbr><wbr>t=mythread(str(i))</wbr></wbr></wbr>
<wbr><wbr><wbr>t1.append(t)</wbr></wbr></wbr>
<wbr></wbr>
for i in t1:
<wbr><wbr><wbr>i.start()</wbr></wbr></wbr>
<wbr><wbr></wbr></wbr>
运行的结果为:
>>>
1
0
3
2
5
4
7
6
9
8
>>>
分享到:
相关推荐
主要介绍了python基于event实现线程间通信控制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
前情回顾 1. 信号处理 signal() * 异步通信方式 ---》 同步执行 异步执行 2. 信号量 Semaphore() acquire() 删除 release() 增加 ...7. Python线程 GIL 影响 : 同一时刻只能解释一个线程,造成
使用threading.Event可以实现线程间相互通信,之前的Python:使用threading模块实现多线程编程七[使用Condition实现复杂同步]我们已经初步实现了线程间通信的基本功能,但是更为通用的一种做法是使用threading.Event...
Event对象实现了简单的线程通信机制,它提供了设置信号,清除信号,等待等用于实现线程间的通信。 1.设置信号 使用Event的set()方法可以设置Event对象内部的信号标志为真。Event对象提供了isSet()方法来判断其内部...
一、多线程同步 ...Event : 是最简单的线程间通信的方式,一个线程可以发送信号,其他的线程接收到信号后执行操作。 二、实例 1)Lock & RLock Lock对象的状态可以为locked和unlocked 使用acquire()设置
如何保证线程安全,以及线程之间的同步,或者访问共享变量等问题是十分棘手的问题,也是使用多线程下面临的问题,如果处理不好,会带来较严重的后果,使用python多线程中提供Lock Rlock Semaphore Event Condition ...
用Python的Event做线程同步通信,代码如下: # *-* coding:gb2312 *-* import threading import time stationName=(车站0,车站1,车站2,车站3,车站4,车站5,车站6) currentStationIndex = -1 eventBusStop =
在带有事件的线程之间进行通信。 使用频道广播事件。安装pip install pythreadworker使用范例基本操作和事件: #! python3# Always use worker.sleep. pyWorker would process event queue during# waiting.from ...
06 同步对象event 07 信号量 08 线程队列 09 生产者消费者模型 10 多进程的调用 第35章 01 进程通信 02 进程池 03 协程 04 事件驱动模型 05 IO模型前戏 06 阻塞IO与非阻塞IO 07 select及触发方式 08 select监听多...
目前的IO操作都可能会导致整个线程的挂起,但是我们只希望挂起当前执行的协程,因此需要将IO对象进行改造,让其只会导致挂起当前的协程,而不是整个线程,这里的改造称为“green化”,这个名字来自于python下的一个...
python协程 线程和进程的操作是由程序触发系统接口,最后的执行者是系统;协程的操作则是程序员。 协程存在的意义:对于多线程应用,CPU通过切片的方式来切换线程间的执行,线程切换时需要耗时(保存状态,下次继续...
线程之Event 队列Queue 作业之主机批量管理 第10周 心灵分享 上节回顾 多进程 多进程Queue 多进程Pipes与Manager 进程锁与进程池详解 协程 协程Gevent 协程之爬虫 协程之Socket IO多路复用 IO模式 Select解析...
基于Event Select / POLL通信模型,每个组件对象创建一个通信线程并管理一个Socket连接,适用于小规模客户端场景。 工作流程: 1、创建监听器 2、创建通信组件(同时绑定监听器) 3、启动通信组件 4、连接到目标主机...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
Tcl和与之关联的图形用户界面工具包(Tk)是由加州大学的John Ousterhout教授设计并编写的。尽管它是个商用软件包,但你也可以在Internet上找到它(见第VII页),而且可以在自己的应用程序中自由使用这个软件包。Tcl解释...