生产消费者模式
2014-06-25 20:29
120 查看
#!/usr/bin/env python # -*- coding: utf-8 -*- import threading from time import ctime from random import randint from time import sleep from Queue import Queue class CThread(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 '%s starting at %s.' % (self.name, ctime()) self.res = apply(self.func, self.args) print '%s finished at %s.' % (self.name, ctime()) def writeQ(queue): print 'producing object for Q ...' queue.put('item', 1) print 'queue size now %d' % queue.qsize() def readQ(queue): val = queue.get(1) print 'consumed object from Q ... size now %d.' % queue.qsize() def writer(queue, loops): for i in range(loops): writeQ(queue) sleep(randint(1, 3)) def reader(queue, loops): for i in range(loops): readQ(queue) sleep(randint(2, 5)) def main(): funcs = [writer, reader] nfuncs = range(len(funcs)) nloops = randint(2, 5) q = Queue(32) threads = [] for i in nfuncs: t = CThread(funcs[i], (q, nloops), funcs[i].__name__) threads.append(t) for i in nfuncs: threads[i].start() for i in nfuncs: threads[i].join() print "all task DONE" if __name__ == '__main__': main()
相关文章推荐
- 一个简单的java生产着消费者模式的代码
- 生产消费者模式
- 生产、消费者模式
- 设计模式笔记之六:生产消费者模式
- 生产消费者模式
- 基于生产-消费者模式的任务异步线程池设计与实现
- RabbitMQ下的生产消费者模式与订阅发布模式
- java 生产消费者模式(一)
- 生产消费者模式
- 深度剖析java线程安全|内存模型|生产消费者模式|
- 深入理解生产消费者模式
- Java多线程学习笔记--生产消费者模式
- java使用BlockingQueue实现生产消费者模式
- 生产、消费者模式
- wait/notify实现生产消费者模式
- 生产者-消费者生产模式 在医疗器械当中的使用
- 原版线程通信之生产消费者模式
- 生产真消费者模式之信号灯法
- 生产消费者模式
- python 线程同步:生产/消费者模式