<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def compute_rows_sum(hdf5_file, path, N_columns, N_processes, method = 'Process'):
 """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. """
                 

    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