美文网首页
Python消息队列

Python消息队列

作者: FangHao | 来源:发表于2017-02-08 23:32 被阅读0次

multiprocessing中的Queue

首先我们知道,在各个进程中,每个全局变量与局部变量是不能与其他进程的通讯的,所以说这里可以通过消息队列的方式完成进程间的通讯。
代码见下例子

#coding=utf-8
from multiprocessing import Queue,Process
import time

def write(que):
for value in ['A','B','C','D']:
que.put(value)
print('%s已经被添加至que中'%value)
time.sleep(1)

def read(que):
for i in range(que.qsize()):
print(que.get()+'已被导出')
time.sleep(1)


if __name__ == '__main__':
que = Queue()
p1 = Process(target = write,args = (que,))
p1.start()
p1.join()
p2 = Process(target = read,args = (que,))
p2.start()
p2.join()
print('所有数据导出完毕')

执行结果如下:

当然这是在multiprocessing模块中使用Process的结果。

multiprocessing中的Manager().Queue()#

如果考虑使用进程池Pool的话,我们必须使用multiprocessing模块中的Manager来创建消息队列

代码如下:

#coding=utf-8
from multiprocessing import Pool,Manager
import time,os

def write(que):
print('启动write进程,pid=%s,ppid=%s'%(os.getpid(),os.getppid()))
for i in ['A','B','C','D']:
que.put(i)
print('%s已经添加至que中'%i)
time.sleep(1)

def read(que):
print('启动read进程,pid=%s,ppid=%s'%(os.getpid(),os.getppid()))
for i in range(que.qsize()):
print(que.get()+'已被移除')
time.sleep(1)


if __name__ == '__main__':
po = Pool()
que = Manager().Queue()
po.apply(write,(que,))
po.apply(read,(que,))
po.close()
po.join()
print('主进程%s结束'%os.getpid())

执行结果如下:

Queue模块中的Queue()

此部分介绍在Python同步文章中有介绍,详细看那里

相关文章

  • Python消息队列

    multiprocessing中的Queue 首先我们知道,在各个进程中,每个全局变量与局部变量是不能与其他进程的...

  • 消息队列与python

    基于生产者消费者模式 一、kafka 运行于zookeeper之上,从而实现整个集群化的管理 1.broker(服...

  • Python RabbitMQ 消息队列

    环境 Ubuntu 16.04.1 Python 3.5.2 安装RabbitMQServer 更新软件源 安装 ...

  • 消息队列:消息队列简介

    1. 什么是消息队列 消息队列(message queue),是一种应用程序的通信方法; 消息队列是 生产者-消费...

  • 消息中间件

    消息中间件,也可以叫做中央消息队列或者是消息队列(区别于本地消息队列,本地消息队列指的是 JVM 内实现的队列实现...

  • Python操作RabbitMq详解

    Python 操作RabbitMq详解 一、简介: RabbitMq 是实现了高级消息队列协议(AMQP)的开源消...

  • 消息队列对比

    引用: 常用消息队列对比消息队列及常见消息队列介绍 常用消息队列 1. RabbitMQ 用erlang语言开发的...

  • 消息队列应用-使用异步队列就解耦了吗

    消息队列作用一文介绍了为什么要使用消息队列。我们再来讨论下如何有效使用消息队列。 消息队列模式 目前主流消息队列主...

  • Kafka常见问题解决

    概要:我们使用消息队列,就需要知道为什么要用消息队列,什么场景需要用消息队列,使用消息队列能带来哪些好处和消息队列...

  • 进程间通信(下)

    消息队列 在UNP第二卷中详细介绍了两种消息队列:Posix消息队列和System V消息队列。这两种消息队列很相...

网友评论

      本文标题:Python消息队列

      本文链接:https://www.haomeiwen.com/subject/aeobittx.html