# -*- 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()
新闻热点
疑难解答