p.daemon = True -->守护进程,守护进程不可以再有子进程,并且主进程死守护进程就死,要写在p.start()之前
p.join() ---> 主进程等子进程执行完 之后再结束---> 等的时间就是执行时间最长的子进程执行的时间
p.terminate()-->强制终止进程p,不会进行任何清理操作,如果p创建了子进程,该子进程就成了僵尸进程,用该方法需要特别小心这种情况。如果p保存了一个锁那么也将不会被释放,进而导致死锁
p.is_alive() -->如果p仍然运行,返回True
p.name -->查看进程的名称
p.pid -->查看进程的pid
1 from multiprocessing import Process 2 import os 3 import time 4 def work(): 5 print('%s is working' %os.getpid()) 6 time.sleep(3) 7 if __name__ == '__main__': 8 p1=Process(target=work) 9 p1.start() #初始化1 10 11 print(p1.name) 12 print(p1.pid) 13 print('基于初始化的结果来继续运行') 14 15 16 17 18 #结果 19 Process-1 20 7588 21 基于初始化的结果来继续运行 22 7588 is working
1 from multiprocessing import Process 2 import os 3 import time 4 def work(): 5 print('%s is working' %os.getpid()) 6 time.sleep(3) 7 if __name__ == '__main__': 8 p1=Process(target=work) 9 p2=Process(target=work) 10 p3=Process(target=work) 11 p1.daemon=True 12 p2.daemon=True 13 p3.daemon=True 14 p1.start() #初始化1 15 p2.start() #初始化2 16 p3.start() #初始化3 17 18 # p3.join() 19 # p1.join() 20 # p2.join() 21 print('基于初始化的结果来继续运行') 22 23 24 不加join结果: 25 基于初始化的结果来继续运行 26 27 加上join结果: 28 7760 is working 29 1668 is working 30 9628 is working 31 基于初始化的结果来继续运行 32
1 from multiprocessing import Process 2 import time 3 def work(): 4 print('%s is working' %os.getpid()) 5 time.sleep(1) 6 if __name__ == '__main__': 7 p1=Process(target=work) 8 p1.start() #初始化1 9 10 p1.terminate() 11 time.sleep(3) 12 print(p1.is_alive()) 13 print('基于初始化的结果来继续运行')