zoukankan      html  css  js  c++  java
  • IPC :进程之间的通信

    IPC :进程之间的通信

       1.管道(pipe)

        1.1 特点:

          两边都可以进出

          数据不安全

        1.2 方法:

          

    form multiprocessing import Pipe
    
    left,right = Pipe() #创造一个管子
    left.send() # 从左边放入
    right.revc() # 从右边拿出
    left.close() # 关闭当前端口,并不是关闭了整个管道

      2.队列(Queue)

        2.1 本质:

          管道 + Lock(锁)

          遵循先进先出的原则

        2.2  特点:

          永远不可能出现数据不安全的情况

          多个经常不会同时取走一个数据

        2.3 方法:

          

    form multiprocessing import Queue
    
    q = Queue(5)  # 创建一个队列,并限定队列有多少个元素
    q.put() # 向队列中放入一个元素,如果队列满了进入堵塞状态
    q.get() # 向队列中取出一个元素,如果队列没有元素进入堵塞状态
    q.empty() #判断队列是否是空 , 在多进程内是不可靠的
    q.full() # 判断队列是否满了, 在多进程是不可靠的
    q.put_nowait() # 如果队列满了报错,
    q.get_nowait() #如果队列没有元素报错
    q.qsize() #看队列现在有多少个元素

          2.4 更高级队列 :JoinableQueue

            增加  join() 等待所有队列结束

      3.数据共享(Manager)

        3.1 进程之间的数据共享

          不加锁数据会出错

        3.2 用法

          

    from multiprocessing import  Manage
    
    m = Manage #创建一个数据
    dic = m.dict({'conut':100})  # 创建一个共享的数据类型
    #will support types list, dict, Namespace, Lock, RLock, Semaphore, BoundedSemaphore, Condition, Event, Barrier, Queue, Value and Array. 这么多数据类型
  • 相关阅读:
    iOS开发之字符串去掉首尾空格换行
    iOS开发之截取UIScrollView长图方法、截长图
    iOS开发之语音录制
    iOS开发之程序各种状态监听
    iOS开发之监听应用进入前台后台
    iOS开发之波浪动画效果
    mysql 主从一致性检查
    git 备份和恢复
    tomcat server.xml配置文件 解析
    检查MySQL主从数据一致性
  • 原文地址:https://www.cnblogs.com/wy3713/p/9372552.html
Copyright © 2011-2022 走看看