标签:不能 break art tar 判断 检测 end 一个 位置
from multiprocessing import Process, Queue,Pool import time import os def producer(q): for i in range(5): time.sleep(0.6) print("生产第%s个包子" % (i + 1)) res = i + 1 q.put(res) # 没生产一个,往队列里加一个 time.sleep(1) q.put(None) def cousumer(q): while True: res = q.get() if res == None: break time.sleep(1) print("消费者吃的第%s个包子" % res) if __name__ == ‘__main__‘: ‘‘‘ 进程: target:表示调用对象,也就是子进程要执行的对象 args:调用对象的位置参数元组 kwargs:调用对象的字典 name:子进程的名字 p.join([timeout]):主线程等待P终止 进程队列:进程彼此隔离,要实现进程之间的通信,可以使用队列和管道 q = Queue([maxsize]) q.put(‘123‘) #往队列中加元素 q.get(‘123‘) #往队列中读取并删除一个元素 q.full() #判断队列是否已经满了,满了再放进去就会阻塞 q.empty() #判断队列是否已经空了,空了就不能再get ‘‘‘ q = Queue() p_lst = [] for i in range(5): s1 = "子进程" + "producer" s2 = "子进程" + "cousumer" p = Process(target=producer, args=(q,), name=s1) c = Process(target=cousumer, args=(q,), name=s2) p.start() c.start() print(p.pid) p_lst.append(p) print(p.is_alive()) # 判断进程P是否存话 # p.terminate() # 终止P进程 print(p.is_alive()) p.join() ‘‘‘ 需要等待子进程执行完毕后才能继续执行,就需要有一种机制能够让主进程检测子进程是否运行完毕,在子进程执行完毕后才继续执行,否则一直在原地阻塞,这就是join方法的作用 看清楚:join作用是让主进程等待子进程结束,其他子进程并不会停止 ‘‘‘ time.sleep(1) print("执行主进程") print(p_lst)
标签:不能 break art tar 判断 检测 end 一个 位置
原文地址:https://www.cnblogs.com/shuimohei/p/10500266.html