当前位置: 首页 > 图灵资讯 > 行业资讯> python线程中Condition的原理

python线程中Condition的原理

来源:图灵python
时间: 2024-07-07 19:33:41

原理分析

1、Python条件变量Condition需要关联互斥锁,Condition本身提供waittion、notify、notifyAll方法。

2、可访问共享资源,用于阻塞和通知其他并行线程。

Condition提供了一种多线程通信机制。如果线程1需要数据,线程1将堵塞等待,然后线程2将创建数据。线程2制作数据后,通知线程1获取数据,然后线程1获取数据。

实例

#!usr/bin/envpython
#-*-coding:utf-8_*-
#导入线程模块
importthreading

#创建条件变量condition
con=threading.Condition()

defthread_one(name):
#条件变量condition线程
con.acquire()

print("{}:成语接龙准备好了吗?".format(name))
#醒来正在等待(wait)的线程
con.notify()

#等待对方回应消息,使用wait阻塞线程,等待对方通过notify唤醒线程
con.wait()
print("{}:一干二净".format(name))
#唤醒对方
con.notify()

#等待消息答应
con.wait()
print("{}:一天就知道看抖音美女了,给你一个简单的点,来了:毛手毛脚".format(name))
#唤醒对方
con.notify()

#等待消息答应
con.wait()
print("{}:哟哟哟,不错!".format(name))
#唤醒对方
con.notify()

#条件变量condition线程释放锁锁
con.release()

defthread_two(name):
#条件变量condition线程
con.acquire()

#wait阻塞状态,通过notify等待其他线程唤醒本线程
con.wait()
print("{}:准备好了~开始吧!".format(name))
#唤醒对方
con.notify()

#等待消息答应
con.wait()
print("{}:净你妹啊,没法接...简单一点...".format(name))
#唤醒对方
con.notify()

#等待消息答应
con.wait()
print("{}:嘿,我知道这一点:脚踏实地".format(name))
#唤醒对方
con.notify()

con.release()

if__name__=="__main__":

#创建并初始化线程
t1=threading.Thread(target=thread_one,args=("A"))
t2=threading.Thread(target=thread_two,args=("B"))

#启动线程-注意线程启动顺序,启动顺序非常重要
t2.start()
t1.start()

#堵塞主线程,等待子线程结束
t1.join()
t2.join()


print("程序结束!")


'''
输出结果:

A:成语接龙准备好了吗?
B:准备好了~开始吧!")


'''
输出结果:

A:成语接龙准备好了吗?
B:准备好了~开始吧!
A:一干二净
B:净你妹啊,不能接...简单一点...
A:一天就知道看抖音美女,给你简单一点,来了:毛手毛脚
B:嘿,这个我知道:脚踏实地:脚踏实地
A:哟哟哟,好不错!
程序结束!
'''

以上是python线程中Condition的原理,希望对大家有所帮助。更多Python学习指导:python基础教程

本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。