2022年5月7日 22:38 by wst
python高级进程之间可以通过multiprocessing的Queue实现通信,下面举例说明。
from multiprocessing import Queue, Process
import time
def write_task(q: Queue):
""" 向队列中写入数据 """
if not q.full():
for i in range(5):
message = "消息" + str(i)
q.put(message)
print("写入:%s" % message)
def read_task(q: Queue):
""" 从队列读取数据 """
time.sleep(1)
while not q.empty():
# 等待两秒,如果还没有读到信息就抛出Queue.Empty异常
print("读取:%s" % q.get(True, 2))
if __name__ == "__main__":
print("父进程开始...")
q = Queue() # 父进程创建Queue并传递给各个子进程
pw = Process(target=write_task, args=(q,)) # 实例化写入队列的子进程
pr = Process(target=read_task, args=(q,)) # 实例化读取队列的子进程
pw.start() # 启动子进程pw,写入消息
pr.start() # 启动子进程pr,读取消息
pw.join() # 等待pw结束
pr.join() # 等待pr结束
print("-----父进程结束------")