当前位置: 首页 > 图灵资讯 > 行业资讯> Python如何实现条件变量同步

Python如何实现条件变量同步

发布时间:2025-10-12 17:50:30

条件变量同步

Python提供threading后,有一种线程需要满足条件才能继续执行。.Condition 对象用于支持条件变量线程,它不仅提供RLock()或Lock()的方法,还提供RLock() wait()、notify()、notifyAll()方法。

lock_con=threading.Condition([Lock/Rlock]): 锁是可选的选项,不传人锁,对象自动创建RLock()。

wait():当条件不满足时,调用线程释放锁并进入等待堵塞;

notify():条件创建后调用,通知等待池激活一个线程;

notifyAll():创建条件后,通知等待池激活所有线程。

相关推荐:Python视频教程

importthreading,time
fromrandomimportrandint
classProducer(threading.Thread):
defrun(self):
globalL
whileTrue:
val=randint(0,100)
print('生产者',self.name,':Append'+str(val),L)
iflock_con.acquire():
L.append(val)
lock_con.notify()
lock_con.release()
time.sleep(3)
classConsumer(threading.Thread):
defrun(self):
globalL
whileTrue:
lock_con.acquire()
iflen(L)==0:
lock_con.wait()
print('消费者',self.name,":Delete"+str(L[0]),L)
delL[0]
lock_con.release()
time.sleep(0.25)
if__name__=="__main__":
L=[]
lock_con=threading.Condition()
threads=[]
foriinrange(5):
threads.append(Producer())
threads.append(Consumer())
fortinthreads:
t.start()
fortinthreads:
t.join()
print('----end----')

运行结果:

生产者Thread-1:Append63[]
生产者Thread-2:Append66[63]
Thread-3:Append20[63,66]
生产者Thread-4:Append83[63,66,20]
生产者Thread-5:Append2[63,66,20,83]
生产者Thread-4:Append26[]
Thread-6消费者:Delete26[26]
生产者Thread-2:Append21[]
Thread-3:Append71[21]
生产者Thread-1:Append19[21,71]
生产者Thread-5:Append100[21,71,19]
生产者Thread-1:Append96[]
Thread-6消费者:delete96[96]
...

相关文章

Python如何实现条件变量同步

Python如何实现条件变量同步

2025-10-12
Python如何实现线程条件同步

Python如何实现线程条件同步

2025-10-12
Python如何实现队列的同步实现

Python如何实现队列的同步实现

2025-10-12
Python之线程与进程相关介绍

Python之线程与进程相关介绍

2025-10-12
Python实现自定义函数的5种常见形式分析

Python实现自定义函数的5种常见形式分析

2025-10-12
Python之简单的网络编程

Python之简单的网络编程

2025-10-12