标签:mon pre join() 守护进程 zha 编程 ssi 需要 proc
from multiprocessing import Process
import time,os
def task(s):
time.sleep(s)
if __name__ == '__main__':
p1 = Process(target=task,args=(100,))
p2 = Process(target=task,args=(2,))
p3 = Process(target=task,args=(3,))
p1.start()
p2.start()
p3.start()
p1.join() # 等1s,
p2.join() # 等1s,
p3.join() # 等1s,内部会调用wait()
print(p1.pid)
print('子',p1.pid)
print('主',os.getpid()) # 主进程要等待所有的子进程结束才会结束.因为主进程要在结束前回收僵尸进程.(*****)
p = Process(target=foo)
p.start()
p.terminate() # 给操作系统发了一个请求 强行终止进程p 可能需要一点时间
print(p.is_alive()) # True is_alive() 判断子进程是否活着
p.join()
print(p.is_alive()) # False
if __name__ == '__main__':
p = Process(target=task)
p.daemon = True ## 主进程结束,子进程也会结束
p.start()
time.sleep(2)
print('主')
lock = Lock() # 写在主进程是为了让子进程拿到同一把锁.
q = Queue(n) ##n是队列的容量
q.put('xxx') ##放数据
q.get() ##拿数据
拿或者取的时候没有值时会卡住
q = Queue()
q.put_nowait('666') # block = False
print(q.get_nowait()) #666
from multiprocessing import Process,Queue,JoinableQueue
q = JoinableQueue()
q.put('zhao') # 放队列里一个元素 +1
q.put('qian') +1
print(q.get())
q.task_done() # 完成了一次任务 -1
print(q.get())
q.task_done() # 完成了一次任务 -1
q.join() #计数器不为0的时候 阻塞等待计数器为0后通过
# 想象成一个计数器 :put +1 task_done -1
标签:mon pre join() 守护进程 zha 编程 ssi 需要 proc
原文地址:https://www.cnblogs.com/oxtime/p/11527660.html