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等三方库或工具作为媒介

相关推荐

  1. Python进程通信

    2024-01-09 22:04:02       41 阅读
  2. python中的进程通信

    2024-01-09 22:04:02       12 阅读
  3. 20240204进程通信

    2024-01-09 22:04:02       33 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-09 22:04:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-09 22:04:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-09 22:04:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-09 22:04:02       20 阅读

热门阅读

  1. Hyperledger Fabric Orderer 配置解析

    2024-01-09 22:04:02       34 阅读
  2. Linux部署前后端项目

    2024-01-09 22:04:02       34 阅读
  3. 一分钟学会Linux软链接

    2024-01-09 22:04:02       40 阅读
  4. 【设计模式】 模板方法模式

    2024-01-09 22:04:02       27 阅读
  5. kotlin的接口详解

    2024-01-09 22:04:02       33 阅读
  6. 【DevOps-08-1】Harbor镜像仓库介绍和安装

    2024-01-09 22:04:02       42 阅读