守护线程--day34
"""
----守护线程----
守护线程会在所有非守护线程结束后结束
三个线程 分贝 皇帝 太子 和皇后
如果把皇后设置为守护线程 那么皇后线程会在 太子和皇帝都死亡后死亡
当所有非线程结束后 守护线程也跟着结束了
进程 守护进程会在被守护进程死亡跟着死亡
同一个进程 可以有多个守护线程
"""
from threading import Thread import time def task(): print("子线程运行。。。") time.sleep(1) print("子线程结束。。。") t = Thread(target=task) t.setDaemon(True) t.start() print("over") # 设置为守护进程后主进程结束子线程也会结束
"""
生产者与消费者模型
吃热狗 与 做热狗
"""
from multiprocessing import Process,JoinableQueue def eat_hotdog(name,q): while True: res = q.get() print("%s吃了%s" % (name,res)) time.sleep(random.randint(1,2)) q.task_done() # 记录已经被处理的数据的数量 def make_hotdog(name,q): for i in range(1,6): time.sleep(random.randint(1, 2)) print("%s生产了第%s个热狗" % (name,i)) res = "%s的%s个热狗" % (name,i) q.put(res) # q.put(None) if __name__ == '__main__': q = JoinableQueue() #生产者1 c1 = Process(target=make_hotdog,args=("万达热狗店",q)) c1.start() #生产者2 c2 = Process(target=make_hotdog, args=("老男孩热狗店", q)) c2.start() # 消费者 p2 = Process(target=eat_hotdog,args=("思聪",q)) p2.start() # 首先保证生产者全部产完成 c1.join() c2.join() # 保证队列中的数据全部被处理了 q.join() # 明确生产方已经不会再生成数据了