• 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. 这么多数据类型
  • 相关阅读:
    Swift语法基础: 20
    Swift语法基础:19
    Swift语法基础:18
    Swift语法基础:17
    Swift语法基础:16
    Swift语法基础:15
    Swift语法基础:14
    Swift语法基础:13
    Swift语法基础:12
    Swift语法基础:11
  • 原文地址:https://www.cnblogs.com/wy3713/p/9372552.html
Copyright © 2020-2023  润新知