def add_fluctuations(hdf5_file, N_columns, N_processes):
    """This procedure organizes the addition of small fluctuations on top of 
        a matrix of similarities at 'hdf5_file' across 'N_processes' 
        different processes. Each of those processes is an instance of the 
        class 'Fluctuations_Worker' defined elsewhere in this module.
    """

    random_state = np.random.RandomState(0)
        
    slice_queue = multiprocessing.JoinableQueue()
        
    pid_list = []
    for i in range(N_processes):
        worker = Fluctuations_worker(hdf5_file,
                   '/aff_prop_group/similarities', random_state, 
                   N_columns, slice_queue)
        worker.daemon = True
        worker.start()
        pid_list.append(worker.pid)
            
    for rows_slice in chunk_generator(N_columns, 4 * N_processes):
        slice_queue.put(rows_slice)
        
    slice_queue.join()
    slice_queue.close()
    
    terminate_processes(pid_list)
    gc.collect()
This procedure organizes the addition of small fluctuations on top of 
        a matrix of similarities at 'hdf5_file' across 'N_processes' 
        different processes. Each of those processes is an instance of the 
        class 'Fluctuations_Worker' defined elsewhere in this module.