python线程数据同步,python线程同步方式
这篇文章主要介绍了大蟒中事件实现线程间同步,事件是大蟒线程间同步一种常用的方法,下列内容总结需要的朋友可以参考一下
前言:
事件在大蟒线程间同步是一种常用的方法,本博客以生产者线程和工作者线程为例说明事件在线程间进行10次同步的应用。
导入线程
从线程导入事件,线程
导入时间
随机导入
从时间进入睡眠
pevent=Event() #默认是没有事件的
pevent.clear()
cevent=Event()
cevent.clear()
运行时间=10
互斥锁=线程。锁定()
类生产者线程(线程。螺纹):
def __init__(self,name,runflag):
threading.Thread.__init__(self)
self.name=name
self.runflag=runflag
self.continueflag=Event()
self.continueflag.set()
定义运行(自身):
全局运行时
睡眠(1)
打印(开始线程:自我名)
而自我。继续标记。isset():
打印(等待消费者.)
如果运行时间==0:
self.continueflag.clear()
破裂
pevent.wait()
印刷(成为消费者.)
mutex_lock.acquire()
运行时间=运行时间- 1
互斥锁释放()
pevent.clear()
睡眠(1)
cevent.set()
打印(退出线程:自我名)
self.runflag.set()
类消费者线程(线程。螺纹):
def __init__(self,name,runflag):
threading.Thread.__init__(self)
self.name=name
self.runflag=runflag
self.continueflag=Event()
self.continueflag.set()
定义运行(自身):
全局运行时
打印(开始线程:自我名)
而自我。继续标记。isset():
if 0==runtimes:
self.continueflag.clear()
pevent.set()
破裂
打印(我想消费. 运行时)
pevent.set() #通知生产者要消费
cevent.wait()
cevent.clear()
睡眠(1)
打印(退出线程:自我名)
self.runflag.set()
极好的测试_pthread():
运行标志=事件()
pt=ProducerThread(生产者,运行标志)
ct=ConsumerThread(消费者,运行标志)
pt.start()
ct.start()
pt.join()
ct.join()
runflag.wait()
if __name__==__main__:
打印(===============begin==============)
test_pthread()
打印(===============end===============)
运行结果如下:
到此这篇关于大蟒中事件实现线程间同步介绍的文章就介绍到这了,更多相关事件线程间同步内容请搜索盛行信息技术软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行信息技术软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。