python多线程编程(6): 队列同步
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): 队列同步相关推荐
- python多线程编程: 条件变量同步
2019独角兽企业重金招聘Python工程师标准>>> 有待写.............................哈哈 转载于:https://my.oschina.net/0 ...
- python多线程编程(1): python对多线程的支持
From: http://www.cnblogs.com/holbrook/archive/2012/03/01/2376408.html 前面介绍过多线程的基本概念,理解了这些基本概念,掌握pyth ...
- python多线程编程_python多线程编程(1): python对多线程的支持
前面介绍过多线程的基本概念,理解了这些基本概念,掌握python多线程编程就比较容易了. 在开始之前,首先要了解一下python对多线程的支持. 虚拟机层面 Python虚拟机使用GIL(Global ...
- Python多线程编程---(1)threading 模块 Thread 类
全文参考:Python多线程编程(一):threading 模块 Thread 类的用法详解_frank 的专栏-CSDN博客 最近看了下团队自动化测试用例的代码,里面有涉及并行处理的逻辑,主要是基于 ...
- Python多线程编程之线程子类化
Python多线程编程之线程子类化 基本思路 Threading模块简介 **MyThread**主要代码 实例 所有代码 运行结果 基本思路 导入Threading模块下的Thread类,将其子类化 ...
- Linux多线程编程---线程间同步(互斥锁、条件变量、信号量和读写锁)
本篇博文转自http://zhangxiaoya.github.io/2015/05/15/multi-thread-of-c-program-language-on-linux/ Linux下提供了 ...
- python退出多线程_退出python多线程编程的方法
退出python多线程编程的方法 发布时间:2020-07-11 11:47:33 来源:亿速云 阅读:104 作者:清晨 小编给大家分享一下退出python多线程编程的方法,希望大家阅读完这篇文章后 ...
- Python多线程编程(详细:适合小白入门)
目录 前言 一.进程 1.多任务 2.进程 3.多进程完成多任务 3.1进程的创建步骤 3.2通过进程类创建进程对象 3.3创建进程和启动的代码 4. 进程执行带有参数的任务 5.获取进程编号 6.进 ...
- python多线程编程(2): 使用互斥锁同步线程
上一节的例子中,每个线程互相独立,相互之间没有任何关系.现在假设这样一个例子:有一个全局的计数num,每个线程获取这个全局的计数,根据num进行一些处理,然后将num加1.很容易写出这样的代码: # ...
最新文章
- pytorch MaxUnpool2d
- HBase Shell 的基本操作
- php add 返回id,PHP curl_multi_close函数
- Bada学习- C++以及Flash应用开发流程之创建应用工程
- SAP License:FI-CO集成
- 可以做服务器操作系统的是,可以做服务器操作系统
- TZOJ 1072: 编辑距离(动态规划)
- 相对客观的权重计算方法——熵权法
- java判断来源_java中判断applet 来源的方法有()
- Java中的方法(method)
- A+B问题的题目描述如下:给定两个整数A和B,输出A+B的值。保证A、B及结果均在整型范围内。
- angular12简单搭建项目的过程记录
- 电脑W ndoWs在哪里,苹果电脑如何安装wndows系统.doc
- NEON 常用函数及其执行结果
- 一道google面试题--自然数e中出现的连续的第一个10个数字组成的质数
- 计算机安装系统有哪些东西,重装系统电脑里的东西还有吗|电脑重装系统后原来的东西还在吗...
- 初级选手数据分析——Python职位数据分析全链路
- 《人性的弱点》总结之一 --- 人际交往的基本技巧
- 地图的历史:从古代地图到 GIS
- Python 图像 一样大小_教你把Python当美图秀秀用(一)