# -*- coding: UTF-8 -*-
"""
多线程的生产者,消费者
使用队列Queue """
import Queue
import threading
import time
import random queue = Queue.Queue(3) # 创建3个大小的队列 class Producer(threading.Thread):
"""
生产者,往队列中写数据
"""
def __init__(self, queue):
super(Producer, self).__init__() # 调用父类构造函数
self.queue = queue def run(self):
while True:
my_rand_double = random.random()
self.queue.put(my_rand_double) # 往队列写数据
print "producer randonm %f \n" % (my_rand_double)
time.sleep(2) class Consumer(threading.Thread):
"""
消费者,从队列中读取数据
"""
def __init__(self, queue):
super(Consumer, self).__init__()
self.queue = queue def run(self):
while True:
my_data = self.queue.get() # 从队列读数据
print "consumer:",my_data,"\n"
time.sleep(1) if __name__ == '__main__': print "begin....\n" # 启动线程
Producer(queue).start()
Consumer(queue).start()
Consumer(queue).start() print "main end....\n" """
Out: begin.... producer randonm 0.321120 consumer: 0.32111958348 main end.... producer randonm 0.340942 consumer: 0.340942161065 producer randonm 0.672640 consumer: 0.672639677729 producer randonm 0.940307 consumer: 0.940307007999 producer randonm 0.497011 consumer: 0.497011018834 """

[b0029] python 归纳 (十四)_队列Queue实现生产者消费者的更多相关文章

  1. [b0033] python 归纳 (十八)_队列Queue在多线程中使用(二)

    # -*- coding: UTF-8 -*- """ 多线程同时读队列 使用 join(), task_done() 逻辑: 3个子线程并发 从有6个数据的队列中取数据 ...

  2. [b0027] python 归纳 (十二)_并发队列Queue的使用

    # -*- coding: UTF-8 -*- """ 学习队列 Queue 总结: 1. 队列可以设置大小,也可以无限大小 2. 空了,满了,读写时可以阻塞,也可以报错 ...

  3. Python学习笔记——进阶篇【第九周】———线程、进程、协程篇(队列Queue和生产者消费者模型)

    Python之路,进程.线程.协程篇 本节内容 进程.与线程区别 cpu运行原理 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Ev ...

  4. [b0034] python 归纳 (十九)_线程同步_条件变量

    代码: # -*- coding: utf-8 -*- """ 学习线程同步,使用条件变量 逻辑: 生产消费者模型 一个有3个大小的产品库,一个生产者负责生产,一个消费者 ...

  5. [b0030] python 归纳 (十五)_多进程使用Pool

    1 usePool.py #coding: utf-8 """ 学习进程池使用 multiprocessing.Pool 总结: 1. Pool 池用于处理 多进程,并不 ...

  6. Python笔记(十四)_永久存储pickle

    pickle模块:将所有的Python对象转换成二进制文件存放 应用场景:编程时最好将大对象(列表.字典.集合等)用pickle写成永久数据包供程序调用,而不是直接写入程序 写入过程:将list转换为 ...

  7. [b0039] python 归纳 (二四)_多进程数据共享和同步_锁Lock&RLock

    # -*- coding: utf-8 -*- """ 多进程 锁使用 逻辑: 10个进程各种睡眠2秒,然后打印. 不加锁同时打印出来,总共2秒,加锁一个接一个打印,总共 ...

  8. [b0031] python 归纳 (十六)_线程同步_锁

    # -*- coding: utf-8 -*- """ 学习 多线程同步 使用锁 threading.Lock() 逻辑: 2 个线程,操作同一个整型变量,一个加法,另外 ...

  9. Python 第九篇:队列Queue、生产者消费者模型、(IO/异步IP/Select/Poll/Epool)、Mysql操作

    Mysql操作: grant select,insert,update,delete on *.* to root@"%" Identified by "123456&q ...

随机推荐

  1. 如何在CAD图纸中进行线性标注

    在CAD中,都会在图纸中进行CAD标注,一般都是有CAD标注样式.CAD标注文字等.那其中有一个就是CAD线性标注?可以标注图纸间的距离?那如何在CAD图纸中进行线性标注呢?具体要怎么来进行操作?本篇 ...

  2. 【Unity】 关于Package Manager 无限加载的问题(Loading Packages),以及可能的解决办法(待补充。)

    ·版本:2019.1.8f 官方论坛对于此问题的讨论:地址>Package Manager 许多人都遇到了这个问题,但是无法定位问题出在哪里.官方技术人员提供了一个名为 Package Mana ...

  3. JavaScript动态加载script方式引用百度地图API 拓展---JavaScript的Promise

    上一篇博客JavaScript动态加载script方式引用百度地图API,Uncaught ReferenceError: BMap is not defined 这篇文章中我接触到一个新的单词:Pr ...

  4. 解决adb网络连接中出现的“由于目标计算机积极拒绝,无法连接”错误

    在调试一块全志A83T安卓工控板(已root),启动后,安卓系统正常,设置好以太网 的静态IP地址:192.168.1.181,并接好网线,同时开发电脑WIN7系统IP地址 也是129.168.1.x ...

  5. JVM-10-JAVA 四种引用类型

    JAVA  四中引用类型   1.  强引用 在 Java 中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用. 当一个对象被强引用变量引用时,它处于可达状态,不可能被垃圾回 ...

  6. Python程序中的线程操作-线程队列

    目录 一.线程队列 二.先进先出 三.后进先出 四.存储数据时可设置优先级的队列 4.1 优先级队列 4.2 更多方法说明 一.线程队列 queue队列:使用import queue,用法与进程Que ...

  7. golang数据结构之单链表

    实现单链表的增删查改. 目录如下: singleLink.go package link import ( "fmt" ) //HeroNode 链表节点 type HeroNod ...

  8. 现象:SpringApplication.run后面的语句未执行

    下面的两种情况下,红色的log.info中的内容一直没有执行,和预期不符. 看来,需要在@PostConstruct修饰的函数.CommandLineRunner的run方法中调用 另外的线程 来执行 ...

  9. 【STM32H7教程】第21章 STM32H7的NVIC中断分组和配置(重要)

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第21章       STM32H7的NVIC中断分组和配置( ...

  10. MySQL应用之CROSS JOIN用法简介教程

    目录 2. cross join用法 @ 本博客翻译自两篇博客的: http://www.mysqltutorial.org/mysql-cross-join/ https://www.w3resou ...