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)