位置: IT常识 - 正文
推荐整理分享python线程中Condition的原理(python线程间通信的几种方法),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:python 线程,python多线程condition,python线程的join,python线程的join,Python线程中开启新的进程,python 线程,python 线程,python 线程,内容如对您有帮助,希望把文章链接给更多的朋友!
原理分析
1、Python条件变量Condition需要关联互斥锁,同时Condition本身提供了wait、notify、notifyAll方法。
2、用于阻塞、通知其他并行线程,可以访问共享资源。
Condition提供了一种多线程通信机制。如果线程1需要数据,线程1会堵塞等待,然后线程2会制造数据。线程2制造数据后,通知线程1可以获取数据,然后线程1会获取数据。
实例
#!usr/bin/envpython#-*-coding:utf-8_*-#导入线程模块importthreading#创建条件变量conditioncon=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:哟哟哟,不错不错!程序结束!'''以上就是python线程中Condition的原理,希望对大家有所帮助。更多Python学习指路:Python基础教程
下一篇:织梦免登录自动登录实现方法(织梦网站停止使用了还侵权吗)
友情链接: 武汉网站建设