`
mldxs
  • 浏览: 25069 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

python线程通信之event

 
阅读更多

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实现线程间通信控制

    主要介绍了python基于event实现线程间通信控制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    python多线程DAY04.txt

    前情回顾 1. 信号处理 signal() * 异步通信方式 ---》 同步执行 异步执行 2. 信号量 Semaphore() acquire() 删除 release() 增加 ...7. Python线程 GIL 影响 : 同一时刻只能解释一个线程,造成

    Python多线程编程(八):使用Event实现线程间通信

    使用threading.Event可以实现线程间相互通信,之前的Python:使用threading模块实现多线程编程七[使用Condition实现复杂同步]我们已经初步实现了线程间通信的基本功能,但是更为通用的一种做法是使用threading.Event...

    Python编程之event对象的用法实例分析

    Event对象实现了简单的线程通信机制,它提供了设置信号,清除信号,等待等用于实现线程间的通信。 1.设置信号 使用Event的set()方法可以设置Event对象内部的信号标志为真。Event对象提供了isSet()方法来判断其内部...

    Python多线程同步Lock、RLock、Semaphore、Event实例

    一、多线程同步 ...Event : 是最简单的线程间通信的方式,一个线程可以发送信号,其他的线程接收到信号后执行操作。  二、实例 1)Lock & RLock Lock对象的状态可以为locked和unlocked 使用acquire()设置

    python线程中同步锁详解

    如何保证线程安全,以及线程之间的同步,或者访问共享变量等问题是十分棘手的问题,也是使用多线程下面临的问题,如果处理不好,会带来较严重的后果,使用python多线程中提供Lock Rlock Semaphore Event Condition ...

    Python多线程经典问题之乘客做公交车算法实例

    用Python的Event做线程同步通信,代码如下: # *-* coding:gb2312 *-* import threading import time stationName=(车站0,车站1,车站2,车站3,车站4,车站5,车站6) currentStationIndex = -1 eventBusStop =

    pyWorker:用python编写的线程库。 帮助您构建线程化应用

    在带有事件的线程之间进行通信。 使用频道广播事件。安装pip install pythreadworker使用范例基本操作和事件: #! python3# Always use worker.sleep. pyWorker would process event queue during# waiting.from ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    06 同步对象event 07 信号量 08 线程队列 09 生产者消费者模型 10 多进程的调用 第35章 01 进程通信 02 进程池 03 协程 04 事件驱动模型 05 IO模型前戏 06 阻塞IO与非阻塞IO 07 select及触发方式 08 select监听多...

    coroutine_event.zip

    目前的IO操作都可能会导致整个线程的挂起,但是我们只希望挂起当前执行的协程,因此需要将IO对象进行改造,让其只会导致挂起当前的协程,而不是整个线程,这里的改造称为“green化”,这个名字来自于python下的一个...

    实例讲解python中的协程

    python协程 线程和进程的操作是由程序触发系统接口,最后的执行者是系统;协程的操作则是程序员。 协程存在的意义:对于多线程应用,CPU通过切片的方式来切换线程间的执行,线程切换时需要耗时(保存状态,下次继续...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    线程之Event 队列Queue 作业之主机批量管理 第10周 心灵分享 上节回顾 多进程 多进程Queue 多进程Pipes与Manager 进程锁与进程池详解 协程 协程Gevent 协程之爬虫 协程之Socket IO多路复用 IO模式 Select解析...

    HP-Socket通信框架-其他

    基于Event Select / POLL通信模型,每个组件对象创建一个通信线程并管理一个Socket连接,适用于小规模客户端场景。 工作流程: 1、创建监听器 2、创建通信组件(同时绑定监听器) 3、启动通信组件 4、连接到目标主机...

    基于 selenium 和 flask 实现的秀动辅助+源代码+文档说明

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    Tcl_TK编程权威指南pdf

    Tcl和与之关联的图形用户界面工具包(Tk)是由加州大学的John Ousterhout教授设计并编写的。尽管它是个商用软件包,但你也可以在Internet上找到它(见第VII页),而且可以在自己的应用程序中自由使用这个软件包。Tcl解释...

Global site tag (gtag.js) - Google Analytics