"""
----守护线程----
守护线程会在所有非守护线程结束后结束
三个线程 分贝 皇帝 太子 和皇后
如果把皇后设置为守护线程 那么皇后线程会在 太子和皇帝都死亡后死亡
当所有非线程结束后 守护线程也跟着结束了
进程 守护进程会在被守护进程死亡跟着死亡
同一个进程 可以有多个守护线程
"""
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() # 明确生产方已经不会再生成数据了