Python 进程之间共享数据(全局变量)

Python 进程之间共享数据(全局变量)

进程之间共享数据(数值型):

  1. import multiprocessing

  2.  
  3. def func(num):

  4. num.value=10.78 #子进程改变数值的值,主进程跟着改变

  5.  
  6. if __name__=="__main__":

  7. num=multiprocessing.Value("d",10.0) # d表示数值,主进程与子进程共享这个value。(主进程与子进程都是用的同一个value)

  8. print(num.value)

  9.  
  10. p=multiprocessing.Process(target=func,args=(num,))

  11. p.start()

  12. p.join()

  13.  
  14. print(num.value)

def worker(num, mystr, arr):

    num.value *= 2

    mystr.value = "ok"

    for in range(len(arr)):

        arr[i] = arr[i] * (-1+ 1.5

def dump_vars(num, mystr, arr):

    print 'num: ', num.value

    print 'str: ', mystr[:]

    print 'arr: ', arr[:]

if __name__=='__main__':

    num = Value('i'5)

    mystr = Array('c''just for test')

    arr = Array('d', [1.01.5-2.0])

    dir(str)

    print 'init value'

    dump_vars(num, mystr, arr)

    ps = [Process(target=worker, args=(num, mystr, arr)) for in range(3)]

    for in ps:

        p.start()

    for in ps:

        p.join()

    print

    print 'after all workers finished'

    dump_vars(num, mystr, arr)

进程之间共享数据(数组型):

 
  1. import multiprocessing

  2.  
  3. def func(num):

  4. num[2]=9999 #子进程改变数组,主进程跟着改变

  5.  
  6. if __name__=="__main__":

  7. num=multiprocessing.Array("i",[1,2,3,4,5]) #主进程与子进程共享这个数组

  8. print(num[:])

  9.  
  10. p=multiprocessing.Process(target=func,args=(num,))

  11. p.start()

  12. p.join()

  13.  
  14. print(num[:])

进程之间共享数据(dict,list):

 
  1. import multiprocessing

  2.  
  3. def func(mydict,mylist):

  4. mydict["index1"]="aaaaaa" #子进程改变dict,主进程跟着改变

  5. mydict["index2"]="bbbbbb"

  6. mylist.append(11) #子进程改变List,主进程跟着改变

  7. mylist.append(22)

  8. mylist.append(33)

  9.  
  10. if __name__=="__main__":

  11. with multiprocessing.Manager() as MG: #重命名

  12. mydict=multiprocessing.Manager().dict() #主进程与子进程共享这个字典

  13. mylist=multiprocessing.Manager().list(range(5)) #主进程与子进程共享这个List

  14.  
  15. p=multiprocessing.Process(target=func,args=(mydict,mylist))

  16. p.start()

  17. p.join()

  18.  
  19. print(mylist)

  20. print(mydict)

猜你喜欢

转载自blog.csdn.net/jacke121/article/details/81564246