【Python】多进程-共享变量(Value、string、list、Array、dict)

#练习:未使用共享变量
from multiprocessing import Process
def f(n, a):
    n = 3.1415927 
    for i in range(len(a)):
        a[i] = -a[i]

if __name__ == '__main__':
    num = 0  
    arr = range(10) 
    p = Process(target = f, args = (num, arr))
    p.start()
    p.join()
    print num 
    print arr[:]


#练习:进程间共享变量,进程间都操作了num这个共享变量
from multiprocessing import Process,Value,Array

def f(n,a):
    n.value=3.1415
    for i in range(len(a)):
        a[i]=-a[i]

if __name__=="__main__":
    num.value=Value("d",0.0)    # 创建一个进程间共享的数字类型,默认值为0,d表示小数
    array=Array("i",range(10))  # 创建一个进程间共享的数组类型,初始值为range[10],i表示整数
    p=Process(target=f,args=(num,array))
    p.start()
    p.join()

print num.value
print array[:]


#练习:共享string类型变量
from multiprocessing import Process,Manager,Value
from ctypes import c_char_p

def greet(str):
    str.value=str.value+",wangjing"

if __name__=="__main__":
    manager=Manager()  #多进程可以共享的命名空间
    shareStr=manager.Value(c_char_p,"hello")   #这里c_char_p是个类
    p=Process(target=greet,args=(shareStr,))
    p.start()
    p.join()
    print shareStr.value


#练习:创建共享的字典类型,列表类型
from multiprocessing import Process, Manager

def f( shareDict, shareList ):
    shareDict[1] = '1'
    shareDict['2'] = 2
    shareDict[0.25] = None
    shareList.reverse() # 翻转列表

if __name__ == '__main__':
    manager = Manager()
    shareDict = manager.dict() # 创建共享的字典类型
    shareList = manager.list( range( 10 ) ) # 创建共享的列表类型
    p = Process( target = f, args = ( shareDict, shareList ) )
    p.start()
    p.join()
    print shareDict
    print shareList
原文地址:https://www.cnblogs.com/jingsheng99/p/8784520.html