From: http://www.cnblogs.com/holbrook/archive/2012/03/15/2398060.html

前面介绍了互斥锁和条件变量解决线程间的同步问题,并使用条件变量同步机制解决了生产者与消费者问题。

让我们考虑更复杂的一种场景:产品是各不相同的。这时只记录一个数量就不够了,还需要记录每个产品的细节。很容易想到需要用一个容器将这些产品记录下来。

Python的Queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue。这些队列都实现了锁原语,能够在多线程中直接使用。可以使用队列来实现线程间的同步。

用FIFO队列实现上述生产者与消费者问题的代码如下:

#encoding=utf-8import threadingimport timefrom Queue import Queue

class Producer(threading.Thread):    def run(self):        global queue        count = 0        while True:            for i in range(100):                if queue.qsize() > 1000:                     pass                else:                     count = count +1                     msg = '生成产品'+str(count)                     queue.put(msg)                     print msg            time.sleep(1)

class Consumer(threading.Thread):    def run(self):        global queue        while True:            for i in range(3):                if queue.qsize() < 100:                    pass                else:                    msg = self.name + '消费了 '+queue.get()                    print msg            time.sleep(1)

queue = Queue()

def test():    for i in range(500):        queue.put('初始产品'+str(i))    for i in range(2):        p = Producer()        p.start()    for i in range(5):        c = Consumer()        c.start()if __name__ == '__main__':    test()

python多线程编程(6): 队列同步相关推荐

  1. python多线程编程: 条件变量同步

    2019独角兽企业重金招聘Python工程师标准>>> 有待写.............................哈哈 转载于:https://my.oschina.net/0 ...

  2. python多线程编程(1): python对多线程的支持

    From: http://www.cnblogs.com/holbrook/archive/2012/03/01/2376408.html 前面介绍过多线程的基本概念,理解了这些基本概念,掌握pyth ...

  3. python多线程编程_python多线程编程(1): python对多线程的支持

    前面介绍过多线程的基本概念,理解了这些基本概念,掌握python多线程编程就比较容易了. 在开始之前,首先要了解一下python对多线程的支持. 虚拟机层面 Python虚拟机使用GIL(Global ...

  4. Python多线程编程---(1)threading 模块 Thread 类

    全文参考:Python多线程编程(一):threading 模块 Thread 类的用法详解_frank 的专栏-CSDN博客 最近看了下团队自动化测试用例的代码,里面有涉及并行处理的逻辑,主要是基于 ...

  5. Python多线程编程之线程子类化

    Python多线程编程之线程子类化 基本思路 Threading模块简介 **MyThread**主要代码 实例 所有代码 运行结果 基本思路 导入Threading模块下的Thread类,将其子类化 ...

  6. Linux多线程编程---线程间同步(互斥锁、条件变量、信号量和读写锁)

    本篇博文转自http://zhangxiaoya.github.io/2015/05/15/multi-thread-of-c-program-language-on-linux/ Linux下提供了 ...

  7. python退出多线程_退出python多线程编程的方法

    退出python多线程编程的方法 发布时间:2020-07-11 11:47:33 来源:亿速云 阅读:104 作者:清晨 小编给大家分享一下退出python多线程编程的方法,希望大家阅读完这篇文章后 ...

  8. Python多线程编程(详细:适合小白入门)

    目录 前言 一.进程 1.多任务 2.进程 3.多进程完成多任务 3.1进程的创建步骤 3.2通过进程类创建进程对象 3.3创建进程和启动的代码 4. 进程执行带有参数的任务 5.获取进程编号 6.进 ...

  9. python多线程编程(2): 使用互斥锁同步线程

    上一节的例子中,每个线程互相独立,相互之间没有任何关系.现在假设这样一个例子:有一个全局的计数num,每个线程获取这个全局的计数,根据num进行一些处理,然后将num加1.很容易写出这样的代码: # ...

最新文章

  1. pytorch MaxUnpool2d
  2. HBase Shell 的基本操作
  3. php add 返回id,PHP curl_multi_close函数
  4. Bada学习- C++以及Flash应用开发流程之创建应用工程
  5. SAP License:FI-CO集成
  6. 可以做服务器操作系统的是,可以做服务器操作系统
  7. TZOJ 1072: 编辑距离(动态规划)
  8. 相对客观的权重计算方法——熵权法
  9. java判断来源_java中判断applet 来源的方法有()
  10. Java中的方法(method)
  11. A+B问题的题目描述如下:给定两个整数A和B,输出A+B的值。保证A、B及结果均在整型范围内。
  12. angular12简单搭建项目的过程记录
  13. 电脑W ndoWs在哪里,苹果电脑如何安装wndows系统.doc
  14. NEON 常用函数及其执行结果
  15. 一道google面试题--自然数e中出现的连续的第一个10个数字组成的质数
  16. 计算机安装系统有哪些东西,重装系统电脑里的东西还有吗|电脑重装系统后原来的东西还在吗...
  17. 初级选手数据分析——Python职位数据分析全链路
  18. 《人性的弱点》总结之一 --- 人际交往的基本技巧
  19. 地图的历史:从古代地图到 GIS
  20. Python 图像 一样大小_教你把Python当美图秀秀用(一)

热门文章

  1. 百度地图iOS API
  2. eclipse4.3.1标准版安装freemarker插件
  3. 提高 Web 站点性能的最佳实践
  4. 一起谈.NET技术,.NET4.0 之 Dynamic VS Reflection 效率
  5. 233. 数字 1 的个数
  6. leetcode面试题 04.12. 求和路径(dfs)
  7. 构建自己的简单微服务架构(开源)
  8. python装饰器的使用
  9. 第一个 Python 程序
  10. 【IDE插件】- XCode6代码注释之VVDocumenter