#练习:未使用共享变量 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