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程序设计有所帮助。