`
mldxs
  • 浏览: 26501 次
  • 性别: 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中,线程间通信是多线程编程中的关键部分,用于协调不同线程之间的操作。`threading.Event`是Python标准库`threading`模块提供的一种简单同步机制,它允许线程之间共享布尔状态,实现线程间的等待和通知。...

    python多线程之事件Event的使用详解

    Python中的多线程是并发执行任务的一种方式,而事件(Event)是Python标准库`threading`模块中的一个工具,用于线程间通信和同步。事件机制允许一个线程等待某个特定事件的发生,例如等待某个条件满足后继续执行。在...

    python多线程学习

    3. **Event对象**:Event对象用于线程间通信,可以用来同步线程或等待某个特定事件发生。 ```python e = threading.Event() e.wait() # 等待事件被设置 ``` 4. **Timer对象**:可以安排线程在指定的延迟后执行一次...

    PYthon-multithreading-Test.rar_python_python 多线程_python多线程_多线程

    除了基本的线程操作,Python的`threading`模块还包含了一些其他功能,如定时器(`Timer`)用于延迟执行任务,事件(`Event`)用于线程间通信,以及线程池(`ThreadPoolExecutor`)用于管理和调度线程。 多线程并非...

    python多线程编程.rar

    相比之下,`threading`库是Python的高级线程模块,它基于`thread`库但提供了更多的特性。`threading`库中的`Thread`类不仅包括了`thread`库的基本功能,还增加了命名、守护线程、优先级等功能。此外,`threading`库...

    websocket通信接口python_python通信_Windows编程_websocket通信_websocket_

    总的来说,Python的WebSocket通信接口为开发者提供了一种简单、高效的方法来实现双向实时通信。结合`websockets`库,无论是在Windows还是其他操作系统上,都可以轻松构建WebSocket服务器和客户端应用。通过深入学习...

    python 多线程编程

    Python的多线程编程是开发高效并发应用的关键技术之一。在Python中,多线程允许程序同时执行多个任务,这可以充分利用多核处理器的计算能力。然而,由于GIL(全局解释器锁)的存在,Python的多线程在CPU密集型任务上...

    Python-python多线程函数库vthread简而强大

    3. **同步与通信机制**:vthread库可能还包含了类似信号量(Semaphore)、事件(Event)或条件变量(Condition)等同步原语,用于控制线程间的协作和通信,确保数据的安全性和程序的正确性。 4. **异常处理**:在多...

    Python库 | event_stream-1.3.0-cp38-cp38-win_amd64.whl

    **事件流(Event Stream)编程**是一种编程范式,它基于发布/订阅模式,允许程序通过发送和处理事件来通信,而不是直接调用方法或返回值。这种编程方式常用于异步编程,尤其在高并发和实时数据处理场景中非常有效。 ...

    python多线程DAY04.txt

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

    Python多线程示例

    10. **线程间的通信**:Python的`queue`模块提供了线程安全的队列,可以在不同线程之间传递数据,避免了共享数据导致的竞态条件。 通过这个`run.py`文件,你可以学习到如何在Python中实现多线程,以及如何控制和...

    基于python的多线程例子,详细介绍了多线程处理

    Python提供了多种工具,如锁(`threading.Lock`)、条件变量(`threading.Condition`)、信号量(`threading.Semaphore`)和事件(`threading.Event`)。这些工具可以帮助我们避免数据竞争和死锁问题,确保线程安全...

    python使用threading获取线程函数返回值的实现方法

    `Event`类用于线程间通信,`Timer`类可以延迟执行函数,`local`类则用于存储线程局部变量。 在给定的描述中,作者面临的问题是如何在一个环境搭建工具中,通过多线程并行执行操作,并收集每个操作的返回值来判断...

    Python如何实现线程间通信

    此外,Python还提供了其他同步机制,如`Semaphore`(信号量)用于限制对资源的访问,`Lock`(锁)用于保护临界区,以及`Event`(事件)用于线程间的简单同步。 总结来说,Python通过`queue`库和线程同步原语提供了...

    详解python多线程、锁、event事件机制的简单使用

    线程之间可以通过共享数据来通信,但需要注意的是,由于Python的全局解释器锁(GIL),即使在多核CPU环境下,同一时刻只有一个线程在执行Python字节码。GIL的存在是为了确保线程安全,避免数据竞争,但它也限制了...

    python 实现线程之间的通信示例

    【Python线程通信详解】 在Python中,线程间的通信是多线程编程中的关键概念,主要用于解决资源的共享和同步问题。虽然Python的全局解释器锁(GIL)限制了在同一时刻只有一个线程执行Python字节码,但线程间通信...

    multithreading of python.rar_python多线程

    `Event`可以用来设置和检查一个标志,用于线程间的通信;`Semaphore`和`BoundedSemaphore`用于限制并发访问资源的数量。 线程的优先级可以通过`threading.Thread`的`daemon`属性来设置,`daemon`值为True的线程在主...

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

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

    python多线程1

    6. **事件(Event)**:用于线程间通信,标志某个事件的发生,线程可以等待或检查事件状态。 四、GIL(全局解释器锁) Python的GIL是线程同步的机制,它确保任何时候只有一个线程执行Python字节码。这限制了Python...

    多线程同步:事件(event)

    "事件(event)"是一种在Java和Python等多线程环境中用于线程间通信和同步的机制。事件模型允许一个线程等待特定条件发生,然后才能继续执行,而这个条件可能由另一个线程触发。在给定的“多线程同步:事件(event)”...

Global site tag (gtag.js) - Google Analytics