from multiprocessing import Process,Manager,Value
from ctypes import c_char_p
def f(shareDict,shareList,i,s):
shareDict[1]='1'
shareDict[2]=2
shareDict[0.25]=None
shareList.reverse()
i.value+=1
s.value=s.value+' ,over!'
if __name__ == "__main__":
i=Value('i',0) # 共享数字变量
m=Manager()
shareDict=m.dict() # 共享字典变量
shareList=m.list(range(5)) # 共享列表变量
s=m.Value(c_char_p,'hello') # 共享字符串变量
p=Process(target=f,args=(shareDict,shareList,i,s))
p.start()
p.join()
print(shareList)
print(shareDict)
print(i.value)
print(s.value)
# 共享实例对象
from multiprocessing import Process,Value,Lock
class Counter(object):
def __init__(self,initval=0):
self.val=Value('i',initval)
self.lock=Lock()
def increate(self):
with self.lock:
self.val.value+=1
def value(self):
return self.val.value
def func(counter):
for i in range(5):
counter.increate()
if __name__ =="__main__":
c=Counter(0) #实例对象
procs=[Process(target=func,args=(c,)) for i in range(3)]
for p in procs:p.start()
for p in procs:p.join()
print(c.value())