Python 多线程 生产者消费者模型
2016-05-15 14:49
381 查看
my_thread.py
queue.py:
import threading from time import ctime class MyThread(threading.Thread): def __init__(self, func, args, name=''): threading.Thread.__init__(self) self.name = name self.func = func self.args = args def get_result(self): return self.res def run(self): print 'starting ', self.name, ' at:',ctime() self.res = apply(self.func, self.args) print self.name ,'finished at:' ctime()
queue.py:
from random import randint from time import sleep from Queue import Queue from my_thread import MyThread def write_q(queue): print 'producting object for Q...' queue.put('xxx',1) print 'size now: ',queue.qsize() def read_q(queue): val = queue.get(1) print 'consumed object from Q... size now', queue.qsize() def writer(queue, loops): for i in range(loops): write_q(queue) sleep(randint(1,3)) def reader(queue,loops): for i in range(loops): read_q(queue) sleep(randint(2,5)) funcs = [writer, reader] nfuncs = range(len(funcs)) def main(): nloops = randint(2,5) q = Queue(32) threads = [] for i in nfuncs: t = my_thread.MyThread(funcs[i],(q,nloops),funcs[i].__name__) threads.append(t) for i in nfuncs: threads.start(i) for i in nfuncs: threads.join() print 'all done'
相关文章推荐
- Python
- 关于python文件转为exe文件
- PYTHON代理IP
- Eclipse配置PyDev插件来实现python开发环境
- python_day1学习笔记
- Sublime Text 3 python和Package Control配置方法
- kaggle 入门 digit recognizer python randomForestClassifier
- python之模块之shutil模块
- Python实战——1_1.网页制作
- Python写xls笔记
- python正则表达式 详解与实例
- java调用Python
- python练习五—简单web应用
- Python语法
- Python-格式化字符串
- Python第五讲
- ArcMap中使用arcpy进行网格截图
- [python爬虫]爬取学校教务处以及登录过程验证码的处理
- python调试
- python调试