当前位置: 首页 > news >正文

Python进程间通信

多线程通信简称IPC(IPC(Inter-Process Communication),多进程间无法直接实现数据交互,需要通过如下方式实现进程之间通讯

  • 管道:pipe 基于共享的内存空间
  • 队列:pipe+锁的概念--->queue
  • 共享内存

队列 - Queue()

from multiprocessing import Queue

什么是multiProcess.Queue: 创建共享的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递。

其中 Queue([maxsize]) 用于创建共享的进程队列。参数 :maxsize是队列中允许的最大项数。如果省略此参数,则无大小限制。底层队列使用管道和锁定实现。

Queue方法使用

g queue.get 的使用

是从队列里面取值并且把队列面的取出来的值删掉,没有参数的情况下就是是默认一直等着取值, 就算是队列里面没有可取的值的时候,程序也不会结束,就会卡在哪里,一直等着

from multiprocessing import Queue
q = Queue(3) # 生成一个队列对象,当队列超过了3个等待数据时,第4个会阻塞直接队列有数据消耗完成
###### put方法是往队列里面放值
q.put('1')
q.put('2')
q.put('3')
q.put('4') #阻塞
###### 其他方法:q.full() 是否满了 q.empty()是否空队列


###### get方法是从队列里面取值
print(q.get())
print(q.get())
print(q.get())
详情官方文档
https://docs.python.org/zh-cn/3/library/multiprocessing.html
注意:部分方法只在windows上有效

管道:Pipe()

from multiProcessing  import Pipe

parent,child = Pepe() #管道默认情况下是双工的,即parent与child都有send()和recv()方法

官网:https://docs.python.org/zh-cn/3/library/multiprocessing.html

共享内存 - 进程内同步

from multiprocessing import shared_memory
shm = shared_memory.SharedMemory(create=True, size=10)
共享内存使用较少,日常工程应用中,如果需要共享内存一般是用redis等三方库或工具作为媒介

相关文章:

  • 手机与电脑投屏互联方案
  • MySQL语法练习-DML语法练习
  • 基于长短期神经网络LSTM的测量误差预测
  • 混淆技术概论
  • Hackathon | Mint Blockchain 启动全球 NIP 创意提案黑客松活动!
  • 精进单元测试技能——Pytest断言的艺术
  • 师傅带练|在线实习项目,提供实习证明
  • 有趣的前端知识(二)
  • SG-8018CA 系列 (晶体振荡器 可编程 可用+105°C )
  • TS 36.213 V12.0.0-PDSCH相关过程(2)-用于CSI报告的UE过程
  • 华为bgp之多级RR及团体属性、正则表达式多种应用案例
  • springmvc内嵌tomcat、tomcat整合springmvc、自研国产web中间件
  • Java解决动态口令问题
  • 2023 全球程序员收入报告新鲜出炉
  • Opencv实验合集——实验八:相机校准
  • 游戏、设计选什么内存条?光威龙武系列DDR5量大管饱
  • matlab subs 函数计算太慢
  • 想要成为机器学习领域的高手吗?这里有五本必读免费书,订阅周报发链接 (下)
  • 一文讲透使用Python绘制双纵轴线图
  • 浅谈能耗系统在马来西亚连锁餐饮业的应用
  • 李成钢出席中国与《数字经济伙伴关系协定》成员部级会议
  • 普京确定俄乌谈判俄方代表团名单
  • 德国总理默茨发表首份政府声明:将提升国防能力,全力发展经济
  • 联合国第二届运动会闭幕,刘国梁受邀成为“联合国运动会大使”
  • 在古老的意大利科莫歌剧院,廖昌永唱响16首中国艺术歌曲
  • 5吨煤炭“瞬间蒸发”?掺水炭致企业损失千万,腐败窝案曝光