python3 进程2
僵尸进程处理方法:
3,创建二级子进程处理
4,在父进程中使用信号处理的方法忽略子进程发来的信号;
signal(SIGCHLD,DIG,IGN)
1 # 创建二级子进场解决僵尸进程 2 import os 3 4 #创建一级子进程 5 pid = os.fork() 6 7 if pid < 0: 8 print('create process failed') 9 elif pid == 0: 10 #创建二级子进程 11 p = os.fork() 12 if p < 0: 13 print('process failed') 14 elif p == 0: 15 print("做二级子进程任务") 16 else: 17 #一级子进程退出,使二级子进程成为孤儿 18 os._exit(0) 19 else: 20 #等待一级子进程退出 21 os.wait() 22 print("做父进程该做的")
更高效的进程创建方法
multiprocessing 模块(标准库模块)
创建的进程的步骤:
1,将要完成的事件封装成一个个函数;
2,使用multiprocessing提供的接口函数创建进程;
3,使新的进程和指定的函数相关联去完成函数中的工作;
4,对进程进行回收处理;
1 import multiprocessing as mp 2 import os 3 import time 4 5 #将要做的事封装为函数 6 def th1(): 7 print(os.getppid(),"----",os.getpid()) 8 print('吃饭早饭') 9 time.sleep(1) 10 print('吃饭午饭') 11 time.sleep(2) 12 print('吃饭晚饭') 13 time.sleep(3) 14 15 def th2(): 16 print(os.getppid(),"----",os.getpid()) 17 print("睡午觉") 18 time.sleep(1) 19 print("睡觉") 20 time.sleep(3) 21 22 def th3(): 23 print(os.getppid(),"----",os.getpid()) 24 print("打豆豆") 25 time.sleep(2) 26 print("打豆豆") 27 time.sleep(2) 28 29 #创建3个子进程,生成子进程对象 30 #将函数和进程进行关联 31 p1 = mp.Process(target = th1) 32 p2 = mp.Process(target = th2) 33 p3 = mp.Process(target = th3) 34 35 #启动进程让其执行对应的函数事件 36 #该函数即为这个就进程内容 37 p1.start() 38 p2.start() 39 p3.start() 40 41 print("Parent PID:",os.getpid()) 42 43 # 阻塞等对应子进程的退出,然后回收子进程 44 p1.join() 45 p2.join() 46 p3.join() 47 48 print("***********************") 49 # th1() 50 # th2() 51 # th3()