python多线程生产消费
#!/usr/bin/env python
# -*- coding: utf-8 -*- from threading import Thread
from Queue import Queue
import time class Producer(Thread): def __init__(self,name,queue):
self.__name = name
self.__queue = queue
super(Producer,self).__init__() def run(self):
while 1:
if self.__queue.full():
time.sleep(1)
else:
self.__queue.put('bread')
time.sleep(1)
print '%s produce a bread' %(self.__name,) class Consumer(Thread): def __init__(self,name,queue):
self.__name = name
self.__queue = queue
super(Consumer,self).__init__() def run(self):
while 1:
if self.__queue.empty():
time.sleep(1)
else:
self.__queue.get()
time.sleep(1)
print '%s eat a bread' % (self.__name,) que = Queue(maxsize=100) for p in range(3):
name = 'P%d' % (p,)
temp = Producer(name, que)
temp.start() for item in range(20):
name = 'C%d' % (item,)
temp = Consumer(name, que)
temp.start()
python多线程生产消费的更多相关文章
- 【并发】8、借助redis 实现多线程生产消费阻塞队列
顾名思义这个就是再消费的时候,不是之前的那哥用yield进行线程切换的操作,而是用线程等待阻塞的方式去执行,说实话我感觉效率不一定有之前那个好, 因为我对这种阻塞队列使用的时候,之前有发现阻塞队列,塞 ...
- 【并发】7、借助redis 实现多线程生产消费队列
1.这是第一个简单的初始化版本,看起来比使用fqueue似乎更好用 package queue.redisQueue; import queue.fqueue.vo.TempVo; import re ...
- 【并发】6、借助FQueue 实现多线程生产消费队列
1.这里先要说一下为什么会想到fqueue,因为这个是一个轻量级的消息队列框架,并且速度很快,用起来很方便,就是这样 当然后期考虑使用redis,这里先上一个fqueue的版本,后面有时间我再吧他改成 ...
- Python并发编程-生产消费模型
生产消费模型初步 #产生两个子进程,Queue可以在子进程之间传递消息 from multiprocessing import Queue,Process import random import t ...
- Day9 - Python 多线程、进程
Python之路,Day9, 进程.线程.协程篇 本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线 ...
- 进程,线程,GIL,Python多线程,生产者消费者模型都是什么鬼
1. 操作系统基本知识,进程,线程 CPU是计算机的核心,承担了所有的计算任务: 操作系统是计算机的管理者,它负责任务的调度.资源的分配和管理,统领整个计算机硬件:那么操作系统是如何进行任务调度的呢? ...
- 浅析Python多线程
学习Python多线程的资料很多,吐槽Python多线程的博客也不少.本文主要介绍Python多线程实际应用,且假设读者已经了解多线程的基本概念.如果读者对进程线程概念不甚了解,可参见知名博主 阮一峰 ...
- Python 多线程、进程
本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...
- Python 多线程、多进程 (一)之 源码执行流程、GIL
Python 多线程.多进程 (一)之 源码执行流程.GIL Python 多线程.多进程 (二)之 多线程.同步.通信 Python 多线程.多进程 (三)之 线程进程对比.多线程 一.python ...
随机推荐
- [转]Java的文件读写操作
file(内存)----输入流---->[程序]----输出流---->file(内存) 当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStr ...
- python 爬虫 重复下载 二次请求
在写爬虫的时候,难免会遇到报错,比如 4XX ,5XX,有些可能是网络的原因,或者一些其他的原因,这个时候我们希望程序去做第二次下载, 有一种很low的解决方案,比如是用 try except t ...
- Mysql 导入CSV数据 语句 导入时出现乱码的解决方案
1. 登陆mysql 2. use testdb 3. 执行导入语句 LOAD DATA LOCAL INFILE 'd://exportedtest2.csv' INTO TABLE usertab ...
- 【转】在 XAML 的属性中,转义大括号 {}
我们知道大括号"{}"在XAML中是用来处理标记扩展的. 比如: <Button Content="{Binding}"/> 但如何转义而表示普 ...
- 学习排序算法(一):单文档方法 Pointwise
学习排序算法(一):单文档方法 Pointwise 1. 基本思想 这样的方法主要是将搜索结果的文档变为特征向量,然后将排序问题转化成了机器学习中的常规的分类问题,并且是个多类分类问题. 2. 方法流 ...
- oracle视图建主键
一个项目要求视图建主键,以下是一个样例 CREATE or replace VIEW SME_V_A.... (AGENTID,AGENTNAME,BUSYNUM,RESTNUM,RESTTIME, ...
- python代码制作configure文件
在lua中,一直用lua作为config文件,或承载数据的文件 - 好处是lua本身就很好阅读,然后无需额外写解析的代码,还支持在configure文件中读环境变量,条件判断等. 在lua中通过loa ...
- ios 精简日历
网上其他人写的日历类功能都很齐全,比较繁杂,对于想看看日历基础实现然后自己绘制日历的我来说不太方便,就自己整理了一个极精简的日历出来,大家看了之后应该能多少理解日历该怎么自定义,很简单. 我的小dem ...
- Debugging the Java HotSpot VM
Open Heart Surgery: Analyzing and Debugging the Java HotSpot VM at the OS Level https://www.youtube. ...
- 每日英语:Tencent Fights for China's Online Shoppers
In the war for the Chinese Internet, messaging giant Tencent is taking the battle to rival Alibaba's ...