生产-消费者问题

来源:互联网 发布:淘宝上怎么买电棍 编辑:程序博客网 时间:2024/04/30 12:06
# -*- coding: UTF-8 -*-import threadingimport timefrom random import randintfrom Queue import Queueclass MyThread(threading.Thread):        def __init__(self, func, args, name =""):        threading.Thread.__init__(self)        self.name = name        self.func = func        self.args = args            def run(self):        apply(self.func, self.args)def writeQ(queue):    print "producing object for Q..."    queue.put("XXX", 1)    print "size now", queue.qsize()    def readQ(queue):    val = queue.get(1)    print "consumed object from Q ...size now", queue.qsize()    def writer(queue, loops):    for i in range(loops):        writeQ(queue)        time.sleep(randint(1, 3))        def reader(queue, loops):    for i in range(loops):        readQ(queue)        time.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 = MyThread(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 done"    if __name__ == "__main__":    main()

0 0
原创粉丝点击