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. 这么多数据类型

 

posted @ 2018-07-26 16:27  Begin_Again  阅读(132)  评论(0编辑  收藏  举报