ITKeyword,专注技术干货聚合推荐

注册 | 登录

Python学习 多线程编程 生产者-消费者问题

killua_hzl 分享于 2010-08-05

推荐:Linux 系统应用编程——多线程经典问题(生产者-消费者)

         “生产者——消费者”问题是Linux多线程编程中的经典问题,主要是利用信号量处理线程间的同步和互斥问题。          “生产者——消费者”问题描述如下

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

生产者-消费者问题是系统进程里面的一个经典问题,这里用Python简单模拟一下。

推荐:java多线程实现生产者与消费者---经典问题

前几天老师领着学习了一下单线程和多线程的题目。 这里是操作系统中非常经典的题目,生产者和消费者的题,这里涉及的是仓库, 只有一个人(生产者或消费者)进入

 

#!/usr/bin/env python #生产者-消费者问题 import threading from random import randint from time import sleep, ctime from Queue import Queue #创建MyThread子类 class MyThread(threading.Thread): def __init__(self, func, args, name = ''): threading.Thread.__init__(self) self.name = name self.func = func self.args = args def getResult(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() #生产者与消费者问题 def writeQueue(queue): queue.put('Anything', 1) print "Producing object for Queue. Size now", queue.qsize() def readQueue(queue): val = queue.get(1) print 'Consumed object from Queue. Size now', queue.qsize() def produce(queue, loops): for i in range(loops): writeQueue(queue) sleep(randint(1,3)) def consume(queue, loops): for i in range(loops): readQueue(queue) sleep(randint(2,5)) def main(): funcs = [produce, consume] nfuncs = range(len(funcs)) nloops = randint(2, 5) queue = Queue(32) threads = [] for i in nfuncs: t = MyThread(funcs[i], (queue, nloops),funcs[i].__name__) threads.append(t) for i in nfuncs: threads[i].start() for i in nfuncs: threads[i].join() print 'All Done!!' if __name__ == '__main__': main() 

推荐: 生产者消费者问题

问题描述: 生产者消费者问题是一个著名的线程同步问题,该问题描述如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者

生产者-消费者问题是系统进程里面的一个经典问题,这里用Python简单模拟一下。   #!/usr/bin/env python #生产者-消费者问题 import threading from random import randint from time import sl

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。