多进程共享数据:数字变量、字符串变量、列表变量、字典变量、实例对象

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())
原文地址:https://www.cnblogs.com/reyinever/p/10858084.html