code: def ndarray(shape, dtype, location, order='F', readonly=False, lock=None, **kwargs):
    
    if EMULATE_SHM:
      return ndarray_fs(shape, dtype, location, lock, readonly, order, **kwargs)
    return ndarray_shm(shape, dtype, location, readonly, order, **kwargs)
docs: Create a shared memory numpy array. 
    Lock is only necessary while doing multiprocessing on 
    platforms without /dev/shm type  shared memory as 
    filesystem emulation will be used instead.
  
    Allocating the shared array requires cleanup on your part.
    A shared memory file will be located at sharedmemory.PLATFORM_SHM_DIRECTORY + location
    and must be unlinked when you're done. It will outlive the program.
  
    You should also call .close() on the mmap file handle when done. However,
    this is less of a problem because the operating system will close the
    file handle on process termination.
  
    Parameters:
    shape: same as numpy.ndarray
    dtype: same as numpy.ndarray
    location: the shared memory filename 
    lock: (optional) multiprocessing.Lock
  
    Returns: (mmap filehandle, shared ndarray)