Python之路PythonThread,第二篇,进程2

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("做父进程该做的")
View Code

更高效的进程创建方法

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()
View Code

猜你喜欢

转载自www.cnblogs.com/weizitianming/p/9175006.html