简单的python多进程 生产者/消费者

主进程作为消费者,进程池pool中的进程作为生产者
def produce(para):
    i,q=para
    q.put(i)
    return
if __name__ == '__main__':
    pool = Pool(2)  #进程池,充当生产者
    q=Manager().Queue() 

    a=[[1,q],[2,q],[3,q]]
    pool.map(produce,a)
    while True:
        a=q.get() #主进程充当消费者
        print a
        if q.empty():
            time.sleep(1)
            if q.empty():
                break

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生产者消费者问题是一个经典的多线程问题,但是在Python中,我们也可以使用多进程来解决这个问题。 下面是一个使用Python进程处理生产者消费者问题的示例代码: ```python import multiprocessing import time # 生产者 def producer(queue): for i in range(5): print('Producing', i) queue.put(i) time.sleep(1) # 消费者 def consumer(queue): while True: item = queue.get() if item is None: break print('Consuming', item) time.sleep(2) if __name__ == '__main__': queue = multiprocessing.Queue() producer_process = multiprocessing.Process(target=producer, args=(queue,)) consumer_process = multiprocessing.Process(target=consumer, args=(queue,)) producer_process.start() consumer_process.start() producer_process.join() queue.put(None) consumer_process.join() ``` 在这个示例代码中,我们使用了Python的`multiprocessing`模块来创建了两个进程,一个是生产者进程,一个是消费者进程。我们使用了一个`multiprocessing.Queue`对象来作为生产者消费者之间的通信管道。生产者进程会不断地向这个管道中添加数据,而消费者进程则会不断地从管道中取出数据进行处理。 运行这个代码,你会看到生产者进程不断地输出生产的数据,而消费者进程则不断地输出消费的数据。当生产者进程生产完所有数据后,我们向管道中添加了一个`None`对象,以此来通知消费者进程数据已经处理完毕,可以退出了。最后,我们使用`join()`方法来等待两个进程都退出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值