Method for sharing data of global variables between Python processes

  • 2021-07-18 08:35:18
  • OfStack

Sharing data between processes (numeric):


import multiprocessing
 
def func(num):
 num.value=10.78 # The child process changes the value of the value, and the main process changes accordingly 
 
if __name__=="__main__":
 num=multiprocessing.Value("d",10.0) # d Indicate numerical value , The main process and child processes share this value . (The main process and the child process are the same 1 A value ) 
 print(num.value)
 
 p=multiprocessing.Process(target=func,args=(num,))
 p.start()
 p.join()
 
 print(num.value)

Sharing data between processes (array type):


import multiprocessing
 
def func(num):
 num[2]=9999 # The child process changes the array, and the main process changes accordingly 
 
if __name__=="__main__":
 num=multiprocessing.Array("i",[1,2,3,4,5]) # The main process shares this array with its children 
 print(num[:])
 
 p=multiprocessing.Process(target=func,args=(num,))
 p.start() 
 p.join()
 
 print(num[:])

Data sharing between processes (dict, list):


import multiprocessing
 
def func(mydict,mylist):
 mydict["index1"]="aaaaaa" # Child process change dict, The main process changes accordingly 
 mydict["index2"]="bbbbbb"
 mylist.append(11)  # Child process change List, The main process changes accordingly 
 mylist.append(22)
 mylist.append(33)
 
if __name__=="__main__":
 with multiprocessing.Manager() as MG: # Rename 
  mydict=multiprocessing.Manager().dict() # The main process shares this dictionary with its children 
  mylist=multiprocessing.Manager().list(range(5)) # The main process and child processes share this List
 
  p=multiprocessing.Process(target=func,args=(mydict,mylist))
  p.start()
  p.join()
 
  print(mylist)
  print(mydict)

Global variable for multithreading (global)


Related articles: