-
进程通讯
进程之间的操作是相互独立的,进程之间的数据共享是一个重要的问题,这里给大家介绍几种进程通讯的方法。
- 进程队列
- 管道
- Manager共享内存
操作系统会复制一个与父进程完全相同的子进程,虽说是父子关系,但是在操作系统看来,他们更像兄弟关系,这2个进程共享代码空间,但是数据空间是互相独立的,子进程数据空间中的内容是父进程的完整拷贝,指令指针在不同操作平台上出现的情况不一,可能完全相同也可能不同。
1.进程队列Queue-----消耗大
队列在进程之间的通讯是采用复制的方式,数据复制需要开辟一块空间存放数据,消耗有点大。其优势是对每个消息指定特定的消息类型,接收的时候不需要按照队列次序,而是可以根据自定义条件接收特定类型的消息。下面就是一个例子
#注意:
Queue.Queue是进程内非阻塞队列,multiprocess.Queue是跨进程通信队列。
1.from queue import Queue
这个是普通的队列模式,类似于普通列表,先进先出模式,get方法会阻塞请求,直到有数据get出来为止
2.from multiprocessing.Queue import Queue(各子进程共有)
这个是多进程并发的Queue队列