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