zoukankan      html  css  js  c++  java
  • IPC进程间通讯

    一、IPC(Inter-Process Communication)

    空间复用 中内存隔离开了多个进程直接不能直接交互

    1、几种方式 :

    1.创建一个共享文件

    ​ 缺点: 效率较低

    ​ 优点: 理论上交换的数据量可以非常大

    ​ 适用于: 交互不频繁 且数据量较大的情况

    2.共享内存 (主要方式)

    ​ 缺点: 数据量不能太大

    ​ 优点: 效率高

    ​ 适用于: 交互频繁,但是数据量小

    3.管道

    ​ 管道也是基于文件的 它是单向的 编程比较复杂

    4.socket

    ​ 编程复杂,更适用于基于网络来交换数据

    二、共享内存的三种方式

    1、Manger

    可以为我们创建 进程间同步的容器,但是没有处理安全问题 ,所以并不常用

    2、Queue

    Queue 翻译为队列 是一种特殊的容器 特殊之处在于存取顺序为先进先出

    可以帮我们完成进程间通讯

    from multiprocessing import Queue
    
    q = Queue(2) # 创建队列 并且同时只能存储2个元素
    q.put(1)
    q.put(2)
    
    # q.put(3,block=True,timeout=3) # 默认是阻塞的 当容器中没有位置了就阻塞 直到有人从里面取走元素为止
    print(q.get())
    print(q.get())
    print(q.get(block=True,timeout=3))# 默认是阻塞的 当容器中没有位置了就阻塞 直到有人存入元素为止
    

    扩展: 栈

    也是一种特殊的容器 特殊在于 存取顺序为 先进后出

    函数调用栈

    调用函数时 称之为 函数入栈

    函数执行结束 称之为函数出栈

  • 相关阅读:
    报错:maven 程序包org.junit不存在
    Sublime Text 3
    Win10使用技巧
    CookieHelper
    log4net
    文件导出 Aspose
    C# 数字证书加载 X509Certificate2
    前后端文件上传
    WebApi 后端文件传输至远程服务器
    aspnet_regiis.exe用法(备忘非自创)
  • 原文地址:https://www.cnblogs.com/chuwanliu/p/11134360.html
Copyright © 2011-2022 走看看