当前位置:   article > 正文

Python进程间通信(IPC)/消息队列_python pulsar怎么获取最新的消息队列

python pulsar怎么获取最新的消息队列

进程间通信(IPC)

  1. 必要性: 进程间空间独立,资源不共享,此时在需要进程间数据传输时就需要特定的手段进行数据通信。
  2. 常用进程间通信方法----消息队列
    通信原理: 在内存中建立队列模型,进程通过队列将消息存入,或者从队列取出完成进程间通信。
  3. 实现方法
    from multiprocessing import Queue
    q = Queue(maxsize=0)
    功能: 创建队列对象
    参数:最多存放消息个数
    返回值:队列对象
    q.put(data,[block,timeout])
    功能:向队列存入消息
    参数:data 要存入的内容
    block 设置是否阻塞 False为非阻塞
    timeout 超时检测
    q.get([block,timeout])
    功能:从队列取出消息
    参数:block 设置是否阻塞 False为非阻塞
    timeout 超时检测
    返回值: 返回获取到的内容
    q.full()----------判断队列是否为满
    q.empty()------判断队列是否为空
    q.qsize()--------获取队列中消息个数
    q.close()--------关闭队列
"""
queue_test.py
消息队列演示
"""
from multiprocessing import Queue,Process
from time import sleep
from random import randint

"""
父进程中创建IO,子进程从父进程中获取IO对象,实际上
他们操作的是同一个IO,属性相互影响
如果在各自进程中创建IO对象,那么这些IO对象互相没有
任何影响
"""


# 创建消息队列
q = Queue(3)

def handle():
    while True:
        try:
            # 获取消息
            x,y = q.get(timeout=8)
        except Exception as e:
            print(e)
            break
        else:
            print("%d+%d=%d"%(x,y,x+y))

def request():
    for i in range(6):
        sleep(randint(1,16))
        x = randint(1,100)
        y = randint(1,100)
        q.put((x,y)) #存入消息

p1 = Process(target=handle)
p2 = Process(target=request)
p1.start()
p2.start()
p1.join()
p2.join()


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/628417
推荐阅读
相关标签
  

闽ICP备14008679号