python多进程共享变量
本文实例为大家分享了python多进程共享变量的相关代码,供大家参考,具体内容如下
frommultiprocessingimportProcess,Manager importos importtime classMulFun(): def__init__(self): self.a=[1,2,3,4,5] self.b=0 self.c={} self.s="helloworld" self.radius=Manager().dict() self.radius['a']=self.a self.radius['b']=self.b self.radius['c']=self.c self.radius['s']=self.s deffunc1(self): self.b=self.radius['b'] foriinrange(10): self.b+=i self.radius['b']=self.b time.sleep(0.5) print'1:',self.radius['b'],':',self.radius['c'],os.getpid() deffunc2(self): self.c=self.radius['c'] foriin['ab','bc','cd','df','fg']: self.c[i]=i+i self.radius['c']=self.c time.sleep(0.5) print'2:',self.radius['b'],':',self.radius['c'],os.getpid() defrun(self): process1=Process(target=self.func1,args=()) process2=Process(target=self.func2,args=()) process1.daemon=True process2.daemon=True process1.start() process2.start() process1.join() process2.join() classMulSun1: def__init__(self,radius): self.radius=radius self.a=radius['a'] self.s=radius['s'] defprocess(self): fori,jinenumerate(self.a): #self.a[i]=j*2 #self.radius['a']=self.a time.sleep(0.5) print'1:',self.radius['a'],'&',self.radius['s'] classMulSun2: def__init__(self,radius): self.radius=radius self.a=radius['a'] self.s=radius['s'] defprocess(self): foriinrange(10): self.s=self.s+':%s'%i ifi<len(self.a): self.a[i]+=i else: self.a.append(i+i) self.radius['s']=self.s self.radius['a']=self.a time.sleep(0.5) print'2:',self.radius['a'],'&',self.radius['s'] if__name__=='__main__': aa=MulFun() s1=MulSun1(aa.radius) s2=MulSun2(aa.radius) process1=Process(target=s1.process,args=()) process2=Process(target=s2.process,args=()) process1.daemon=True process2.daemon=True process1.start() process2.start() process1.join() process2.join() print"------------------------" print'processid:',os.getpid() print'done' printaa.radius['a'],'&',aa.radius['s']
以上就是本文的全部内容,希望对大家学习python程序设计有所帮助。