day35多个(子)进程的开启,进程的常用属性和方法
1.名词解释
并发: 单核,多个进程同时发生,让用户感觉多个进程是同时进行的.
并行: 多核,每个核心单独处理一个进程,这几个进程之间是并行的
同步: 当子类进程被开启,并且执行的过程中父类进程会处于等待状态,只有字类进程执行结束,父类进程才会接着执行,直到结束.
异步: 当子类进程被开启并执行过过程中,父类进程不会停止执行,而是同时执行,知道父类进程执行结束.
阻塞: 正在执行的进程,等待某个事件而无法继续时,会放弃处理机而处于阻塞状态,
非阻塞: 没有阻塞
2.两种开启进程的方法
2.1 p = Process(target=func,args=(1,))
from multiprocessing import Process
import time
import os
def func(i):
time.sleep(1)
print(os.getpid(),os.getppid())
if __name__ == '__main__':
p = Process(target=func,args=(1,))
p.start()
print(os.getpid(),os.getppid())
2.2 自定义类,继承Process父类
from multiprocessing import Process
import time
import os
class MyProcess(Process):
def __init__(self,name):
super(MyProcess,self).__init__()
self.name = name
def run(self):
print("这是继承类的方式开启的子进程%s" % self.name)
if __name__ == '__main__':
p1 = MyProcess("baobao")
p1.start()
p1.run()
3.进程的常用方法
3.1 start() 开启一个进程
3.2 join() 将异步变成同步
3.3 is_alive() 判断进程是否还活着
3.4 terminate 杀死一个进程
4.进程的常规属性
4.1 p.name = 给p进程一个名字
4.2 p.pid 返回p进程的pid
4.3 p.daemon = True 将p进程设置为守护进程,
守护进程的两个特点: 1> 守护进程会随着父进程的结束而结束 2> 守护进程不能再创建子进程(不能要孩子)
5.os模块的拓展
5.1 os.getpid 获得进程的pid
5.2 os.getppid 获得进程的父进程的pid