from multiprocessing import Process import time def task(name): print('%s is uynn'%name) time.sleep(3) print('%s is don'%name) if __name__ == '__main__': #在Windows系统上,开启子进程的操作一定要放这下面 ,#比较常用 这个表示执行的是此代码所在的文件。 如果这个文件是作为模块被其他文件调用,不会执行这里面的代码。 只有执行这个文件时, if 里面的语句才会被执行。 这个功能经常可以用于进行测试。 p=Process(target=task,args=('egon',)) p.start()#向操作系统发送请求,操作系统会申请内存空间,然后把父进程的数据拷贝给子进程,作为子进程 print('==========')
from multiprocessing import Process import time class My(Process): def __init__(self,name): super(My,self).__init__() self.name=name def run(self): print('%s is running'%self.name) time.sleep(3) print('%s is don '%self.name) if __name__ == '__main__': p=My('egon') p.start() print('主') # 上面一种直接 常用 # 下面一种重用父类功能
from multiprocessing import Process import time x=10000 def task(): time.sleep(3) global x x=0 print('儿子死了',x) if __name__ == '__main__': p=Process(target=task) p.start() time.sleep(5) print(x) 子进程和父进程是隔离开的 print(x)是 四,父进程等待子进程结束 用join from multiprocessing import Process import time,random#随机 x=1000 def task(n): print('%s is runibg' %n) time.sleep(n) if __name__ == '__main__': #start_time=time.time() # p1=Process(target=task,args=(1,)) # p2=Process(target=task,args=(2,)) # p3=Process(target=task,args=(3,)) # p1.start() # p2.start() # p3.start() # # p1.join() # p2.join() # p3.join() # print('阻',(time.time()-start_time)) 用for 循环 from multiprocessing import Process import time,random#随机 x=1000 def task(n): print('%s is runibg' %n) time.sleep(n) if __name__ == '__main__': start_time=time.time() p_l=[] for i in range(1,4): p=Process(target=task,args=(i,)) p_l.append(p) p.start() for p in p_l: p.join() print('主',(time.time()-start_time))