进程的开启 mulitiprocessing
进程包 mulitiprocessing
1.创建进程的模块
1.1 引入模块
form multiprocessing import Process
1.2 使用模块 Process
p = Process(target = func,args = (1,)) 创建一个进程对象
target : 子进程开启的函数 , args :子进程函数的参数,必须是元组
p.start() 向操作系统提交一个开启子进程的申请
1.3 其他方法
p.join() : 阻塞,直到p这个子进程完毕之后才会继续在执行下面的函数
一批任务使用join,先用列表把进程对象存储起来,在遍历join
p.is_alive() : 检查进程是否仍在执行任务,纯在返回True 错误返回False
p.terminate() : 强制结束子进程,非阻塞
1.4 常用使用方法
1.4.1 函数开启子进程,并传入参数
1 def func(): 2 print('in fun ', os.getpid(),os.getppid()) 3 if __mane__ == '__mian__': 4 print('in main', os.getpid(),os.getppid()) 5 p = Process(target = func,args = (1,)) 6 p.start()
对于windows来说 必要加 if __mane__ == '__mian__':
Windows 创建进程对象等于import引入当前py文件
对于linux ios 来说不必要加 if __mane__ == '__mian__':
linux mac 创建进程对象等于 复制了一份当前py文件 并没有加载
1.4.2 面向对象开启子进程的方法
class Myprocess(Process) def __init__(self,mun) super().__init__ self.num = num def run(self): print('in run ',self.num, os.getpid(),os.getppid()) if __mane__ == '__mian__': print('in main', os.getpid(),os.getppid()) p = Myprocess(1)