code: def compute_rows_sum(hdf5_file, path, N_columns, N_processes, method = 'Process'):
                       
  
      assert isinstance(method, str), "parameter 'method' must consist in a string of characters"
      assert method in ('Ordinary', 'Pool'), "parameter 'method' must be set to either of 'Ordinary' or 'Pool'"
      
      if method == 'Ordinary':
          rows_sum = np.zeros(N_columns, dtype = float)
          
          chunk_size = get_chunk_size(N_columns, 2)
          with Worker.hdf5_lock:
              with tables.open_file(hdf5_file, 'r+') as fileh:
                  hdf5_array = fileh.get_node(path)
                  
                  N_rows = hdf5_array.nrows
                  assert N_columns == N_rows
                  
                  for i in range(0, N_columns, chunk_size):
                      slc = slice(i, min(i+chunk_size, N_columns))
                      tmp = hdf5_array[:, slc]
                      rows_sum[slc] = tmp[:].sum(axis = 0)
                          
      else:
          rows_sum_array = multiprocessing.Array(c_double, N_columns, lock = True)
      
          chunk_size = get_chunk_size(N_columns, 2 * N_processes)
          numpy_args = rows_sum_array, N_columns, np.float64
      
          with closing(multiprocessing.Pool(N_processes, 
                       initializer = rows_sum_init, 
                       initargs = (hdf5_file, path, rows_sum_array.get_lock()) +
                       numpy_args)) as pool:
              pool.map_async(multiprocessing_get_sum, 
                    chunk_generator(N_columns, 2 * N_processes), chunk_size)
          
          pool.close()
          pool.join()
      
          rows_sum = to_numpy_array(*numpy_args)
      
      gc.collect()
      
      return rows_sum
docs: Parallel computation of the sums across the rows of two-dimensional array
          accessible at the node specified by 'path' in the 'hdf5_file' 
          hierarchical data format.