博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python多线程之Condition(条件变量)
阅读量:6341 次
发布时间:2019-06-22

本文共 1508 字,大约阅读时间需要 5 分钟。

#!/usr/bin/env python# -*- coding: utf-8 -*-from threading import Thread, Conditionimport timeitems = []condition = Condition()class Consumer(Thread):    def __init__(self):        Thread.__init__(self)    def consume(self):        global condition        global items        condition.acquire()        if len(items) == 0:            condition.wait()            print ("Consumer notify: no item to consume")        items.pop()        print("Consumer notify: consumed 1 item")        print("Consumer nofity: items to consume are "\              + str(len(items)))        condition.notify()        condition.release()    def run(self):        for i in range(0, 20):            time.sleep(4)            self.consume()class Producer(Thread):    def __init__(self):        Thread.__init__(self)    def produce(self):        global condition        global items        condition.acquire()        if len(items) == 10:            condition.wait()            print ("Producer notify: item producted are"\                   + str(len(items)))            print("Producer nofity: stop the production!!")        items.append(1)        print("Producer nofity: total items producted "\              + str(len(items)))        condition.notify()        condition.release()    def run(self):        for i in range(0, 20):            time.sleep(1)            self.produce()if __name__ == "__main__":    producer = Producer()    consumer = Consumer()    producer.start()    consumer.start()    producer.join()    consumer.join()

转载地址:http://mbroa.baihongyu.com/

你可能感兴趣的文章
Java全角、半角字符的关系以及转换
查看>>
Dubbo和Zookeeper
查看>>
前端项目课程3 jquery1.8.3到1.11.1有了哪些新改变
查看>>
UOJ#179. 线性规划(线性规划)
查看>>
整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)
查看>>
windows的服务中的登录身份本地系统账户、本地服务账户和网络服务账户修改
查看>>
JAVA中循环删除list中元素的方法总结
查看>>
redis 安装
查看>>
SQL some any all
查看>>
电子书下载:Programming Windows Identity Foundation
查看>>
有理想的程序员必须知道的15件事
查看>>
用于测试的字符串
查看>>
财付通和支付宝资料收集
查看>>
理解 IEnumerable 与 IEnumerator
查看>>
NHibernate 2.0 Beta 1 Released和一些工具
查看>>
【每天一个Linux命令】12. Linux中which命令的用法
查看>>
软件接口数据一致性机制
查看>>
微服务架构介绍和RPC框架对比
查看>>
Debian下使用OpenLDAP 管理端
查看>>
泛型排序器TComparer
查看>>