python thread is_set()方法代码示例
时间: 2024-03-12 09:48:06 浏览: 139
下面是一个示例代码,展示了如何使用is_set()方法实现线程之间的同步和协作:
```python
import threading
# 创建一个事件对象
event = threading.Event()
def producer():
# 生产者线程生产数据
data = "Hello, world!"
# 发送数据前等待消费者线程准备好
event.wait()
print("Producer is sending data: ", data)
def consumer():
# 消费者线程等待生产者线程生产数据
print("Consumer is waiting for data...")
event.set()
# 生产者线程生产数据后,开始消费数据
if event.is_set():
print("Consumer is consuming data...")
event.clear()
# 创建生产者线程和消费者线程
t1 = threading.Thread(target=producer)
t2 = threading.Thread(target=consumer)
# 启动线程
t1.start()
t2.start()
# 等待线程结束
t1.join()
t2.join()
```
在上面的代码中,创建了一个事件对象event,并将其作为参数传递给生产者线程和消费者线程。在生产者线程中,调用了wait()方法,使线程进入等待状态,等待消费者线程调用set()方法通知可以发送数据。在消费者线程中,调用了set()方法,通知生产者线程可以发送数据,并且调用了is_set()方法判断是否处于等待状态,如果是,则进行消费操作,否则继续等待。最后,调用了clear()方法清除事件状态,以便下一次使用。
阅读全文