一、进程间通信
1、必要性
进程间空间独立,资源不共享,此时在需要进程间数据传输时就需要特定的手段进行数据通信。
2、方式
(1)套接字
(2)消息队列Queue
- 通信原理:在内存中开辟空间,建立队列模型,进程通过队列将消息存入、取出,完成通信。
- 实现方法:from multiprocessing import Queue
语法:
创建队列对象: q = Queue(maxsize)
maxsize是最多存放消息个数,一个整数、字符串、列表等
返回值:队列对象
语法:
存入 : q.put(data)
取出 : q.get()
语法:
q.full() # 判断是否队满
q.empty() # 判断是否对空
q.qsize() # 队列消息个数 MACOS上没法运行
q.close() # 关闭队列
3、实现进程间通信示例
from multiprocessing import Process,Queue
# 创建消息队列
q = Queue(5)
# 子进程函数
def handle():
while True:
cmd = q.get() # 取出指令
if cmd == "1":
print("\n完成指令1")
elif cmd == "2":
print("\n完成指令2")
# 创建进程
p = Process(target=handle,daemon=True)
p.start()
while True:
cmd = input("指令:")
if not cmd:
break
q.put(cmd) # 通过队列给子进程