进程方法
1.p.start() #启动进程
2.p.run() #进程启动时运行的方法,是它去调用target指定的函数,自定义类中一定要实现该方法
3.p.terminate() #强制终止进程p,不会进行任何清理操作,如果p创建了子进程,该子进程就成了僵尸进程。如果p还保存了一个锁那么也将不会被释放,进而导致死锁
4.p.is_alive() #如果p仍然运行,返回True
5.p.join() #主线程等待p终止,p.join只能join住start开启的进程,而不能join住run开启的进程
进程属性
1.p.daemon #默认为False,如果设为True,代表p为后台运行的*守护进程*,当p的父进程终止时,p也随之终止,并且设定为True后,p不能创建自己的新进程,必须在p.start()之前设置
2.p.name #进程的名称
3.p.pid #进程的pid
4.p.exitcode #进程在运行时为None
5.p.authkey #进程的身份验证键
*守护进程*:
1.父进程的代码执行结束,守护进程就结束
2.不允许开启子进程
3.如果不加join,如果守护进程是在父进程代码的最后位置,那么父进程已经没有代码了,所以守护进程也就无法执行。
#######################################简单示例
from multiprocessing import Process
import time
def func():
time.sleep(1)
print(123)
if __name__ == '__main__':
p = Process(target=func,)
p.start()
p.terminate()# 杀死p进程,让解释器告诉操作系统,请杀掉p进程。
print('子进程是否还活着?', p.is_alive())
time.sleep(0.002)
print('子进程是否还活着?', p.is_alive())
# 返回一个bool值,如果返回True,代表进程还活着,如果返回False,代表子进程死了
# p.is_alive() 判断p进程是否还活着
# p.terminate() 杀死p进程