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中,线程间通信是多线程编程中的关键部分,用于协调不同线程之间的操作。`threading.Event`是Python标准库`threading`模块提供的一种简单同步机制,它允许线程之间共享布尔状态,实现线程间的等待和通知。...
Python中的多线程是并发执行任务的一种方式,而事件(Event)是Python标准库`threading`模块中的一个工具,用于线程间通信和同步。事件机制允许一个线程等待某个特定事件的发生,例如等待某个条件满足后继续执行。在...
3. **Event对象**:Event对象用于线程间通信,可以用来同步线程或等待某个特定事件发生。 ```python e = threading.Event() e.wait() # 等待事件被设置 ``` 4. **Timer对象**:可以安排线程在指定的延迟后执行一次...
除了基本的线程操作,Python的`threading`模块还包含了一些其他功能,如定时器(`Timer`)用于延迟执行任务,事件(`Event`)用于线程间通信,以及线程池(`ThreadPoolExecutor`)用于管理和调度线程。 多线程并非...
相比之下,`threading`库是Python的高级线程模块,它基于`thread`库但提供了更多的特性。`threading`库中的`Thread`类不仅包括了`thread`库的基本功能,还增加了命名、守护线程、优先级等功能。此外,`threading`库...
总的来说,Python的WebSocket通信接口为开发者提供了一种简单、高效的方法来实现双向实时通信。结合`websockets`库,无论是在Windows还是其他操作系统上,都可以轻松构建WebSocket服务器和客户端应用。通过深入学习...
Python的多线程编程是开发高效并发应用的关键技术之一。在Python中,多线程允许程序同时执行多个任务,这可以充分利用多核处理器的计算能力。然而,由于GIL(全局解释器锁)的存在,Python的多线程在CPU密集型任务上...
3. **同步与通信机制**:vthread库可能还包含了类似信号量(Semaphore)、事件(Event)或条件变量(Condition)等同步原语,用于控制线程间的协作和通信,确保数据的安全性和程序的正确性。 4. **异常处理**:在多...
**事件流(Event Stream)编程**是一种编程范式,它基于发布/订阅模式,允许程序通过发送和处理事件来通信,而不是直接调用方法或返回值。这种编程方式常用于异步编程,尤其在高并发和实时数据处理场景中非常有效。 ...
前情回顾 1. 信号处理 signal() * 异步通信方式 ---》 同步执行 异步执行 2. 信号量 Semaphore() acquire() 删除 release() 增加 ...7. Python线程 GIL 影响 : 同一时刻只能解释一个线程,造成
10. **线程间的通信**:Python的`queue`模块提供了线程安全的队列,可以在不同线程之间传递数据,避免了共享数据导致的竞态条件。 通过这个`run.py`文件,你可以学习到如何在Python中实现多线程,以及如何控制和...
Python提供了多种工具,如锁(`threading.Lock`)、条件变量(`threading.Condition`)、信号量(`threading.Semaphore`)和事件(`threading.Event`)。这些工具可以帮助我们避免数据竞争和死锁问题,确保线程安全...
`Event`类用于线程间通信,`Timer`类可以延迟执行函数,`local`类则用于存储线程局部变量。 在给定的描述中,作者面临的问题是如何在一个环境搭建工具中,通过多线程并行执行操作,并收集每个操作的返回值来判断...
此外,Python还提供了其他同步机制,如`Semaphore`(信号量)用于限制对资源的访问,`Lock`(锁)用于保护临界区,以及`Event`(事件)用于线程间的简单同步。 总结来说,Python通过`queue`库和线程同步原语提供了...
线程之间可以通过共享数据来通信,但需要注意的是,由于Python的全局解释器锁(GIL),即使在多核CPU环境下,同一时刻只有一个线程在执行Python字节码。GIL的存在是为了确保线程安全,避免数据竞争,但它也限制了...
【Python线程通信详解】 在Python中,线程间的通信是多线程编程中的关键概念,主要用于解决资源的共享和同步问题。虽然Python的全局解释器锁(GIL)限制了在同一时刻只有一个线程执行Python字节码,但线程间通信...
`Event`可以用来设置和检查一个标志,用于线程间的通信;`Semaphore`和`BoundedSemaphore`用于限制并发访问资源的数量。 线程的优先级可以通过`threading.Thread`的`daemon`属性来设置,`daemon`值为True的线程在主...
使用threading.Event可以实现线程间相互通信,之前的Python:使用threading模块实现多线程编程七[使用Condition实现复杂同步]我们已经初步实现了线程间通信的基本功能,但是更为通用的一种做法是使用threading.Event...
6. **事件(Event)**:用于线程间通信,标志某个事件的发生,线程可以等待或检查事件状态。 四、GIL(全局解释器锁) Python的GIL是线程同步的机制,它确保任何时候只有一个线程执行Python字节码。这限制了Python...
"事件(event)"是一种在Java和Python等多线程环境中用于线程间通信和同步的机制。事件模型允许一个线程等待特定条件发生,然后才能继续执行,而这个条件可能由另一个线程触发。在给定的“多线程同步:事件(event)”...