Python Forum

Full Version: sharing memory(read-write) between multiple processes
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I need multiple processes working to be updating(adding data) to an array in memory, so it will be growing large.
the code I'm posting here doesn't do the desired...

import multiprocessing
import ctypes
import numpy as np
shared_array = None


shared_array_base = multiprocessing.Array(ctypes.c_int64, 1 * 10)
shared_array = np.ctypeslib.as_array(shared_array_base.get_obj())
shared_array = shared_array.reshape(1, 10)
# Parallel processing
def my_func(i):
    '''
    anytime a process runs this code, the desire is for the shared array to be stacked with the contents of arr,
    so by running it for example ten times, after all processes return, printing  shape(shared_array)==(11,10)
    //any indication in the right direction how to do that?

    '''
    global shared_array
    arr=np.array([44,44,44,44,44,44,44,44,44,44])
    shared_array=np.vstack((shared_array,arr))
    #print (shared_array)


if __name__ == '__main__':

    pool = multiprocessing.Pool(processes=2, )
    pool.map(my_func, range(10))

    print(shared_array)  # gives [[0 0 0 0 0 0 0 0 0 0]]
Quote:the code I'm posting here doesn't do the desired...
What in the heck does that mean?

To pass data to/from/between a Process you use a Manager object.