python多进程队列的2种实现方法

来源:互联网 发布:阿里云服务器备案 编辑:程序博客网 时间:2024/06/05 03:39

代码:

# -*- coding: UTF-8 -*-from multiprocessing import Process, JoinableQueueimport osclass WebPage(Process):    def __init__(self, queue):        super(WebPage, self).__init__()        self.queue = queue    def run(self):        print 'process begin'        while not self.queue.empty():            data = self.queue.get()            print data            self.queue.task_done()        print 'process over:%s' % os.getpid()class WebPage2(Process):    def __init__(self, queue):        super(WebPage2, self).__init__()        self.queue = queue    def run(self):        print 'process begin'        for data in iter(self.queue.get, None):            print data        print 'process over:%s' % os.getpid()def run():    queue = JoinableQueue()    for news_id in range(10):        queue.put('put:%s'%news_id)    worker_list = list()    for i in range(2):        worker = WebPage(queue)        worker_list.append(worker)        worker.start()    queue.join()def run2():    queue = JoinableQueue()    worker_list = list()    for i in range(5):        worker = WebPage(queue)        worker_list.append(worker)        worker.start()    queue.join()    for news_id in range(10):        queue.put('put:%s' % news_id)    for i in range(5):        queue.put(None)    for w in worker_list:        w.join()if __name__=="__main__":    run2()

run2可以更简单的控制队列的长度,run1实现起来比较麻烦。

0 0
原创粉丝点击