进程间的通信
''' 两个进程之间想要进行通信,需要在进程之间建立一个管道,这个管道就是队列 ''' from multiprocessing import Queue q = Queue(5) # 括号内可以传入参数,表示队列最大存储数 括号内不传入参数时,默认最大值 # 往队列中添加数据 q.put(1) q.put(2) q.put(3) print(q.full()) # 判断队列是否满了 q.put(4) q.put(5) print(q.full()) q.put(6) # 当队列满了之后再放入值,不会报错,会在原地等待,直到队列中有值被取走(阻塞态) print(q.get()) print(q.get()) print(q.get()) print(q.empty()) # 判断队列中的值是否被取走 print(q.get()) print(q.get()) # print(q.get()) # 当队列中的值被取完时,不会报错,会在原地等待,等待值被传入队列(阻塞态) print(q.get_nowait()) # 当队列中的值被取完时,再取会直接报错 ''' full empty get_nowait 都不适合多进程 '''
进程间通信ICP机制
from multiprocessing import Process,Queue def send(q): q.put('hello') def get(q): print(q.get()) if __name__ == '__main__': q = Queue() p = Process(target=send, args=(q,)) p1 = Process(target=get, args=(q,)) p.start() p1.start() ''' 子进程放数据,主进程获取数据 两个子进程相互放,互相取 '''