并发编程
开启多个子进程
import time,os from multiprocessing import Process def func(filename,content): with open(filename,'w') as f: f.write(content*10*'*') time.sleep(10) if __name__ == '__main__': p_lst = [] for i in range(5): p = Process(target = func,args=('info%s'%i,i)) p_lst.append(p) p.start() for p in p_lst:p.join()# 之前的所有进程必须在这里执行完才能执行下面的代码 # [p.join() for p in p_lst] print([i for i in os.walk(r'E:\code\day0831')])
多进程之间的数据隔离问题
from multiprocessing import Process import os def func(): global n n = 0 print('pid :%s'%os.getpid(),n) if __name__ == '__main__': n = 100 p = Process(target=func) p.start() p.join() print('pid :%s'%os.getpid(),n)
from multiprocessing import Process class MyProcess(Process): def __init__(self,arg1,arg2): super().__init__() self.arg1 = arg1 self.arg2 = arg2 def run(self): print(self.pid) print(self.name) print(self.arg1) print(self.arg2) if __name__ == '__main__': p = MyProcess(1,2) p.start() p2 = MyProcess(3,4) p2.start() # 自定义类 继承Process类 # 必须实现一个run方法,run方法中是在子进程中执行的代码
开启多进程的第二种方式