Use a ProcessPool from the ``concurrent.futures`` module to execute ``num_iters``
    number of instances of ``pynac_func``.  This function takes advantage of ``do_single_dynac_process``
    and ``pynac_in_sub_directory``.

def multi_process_pynac(file_list, pynac_func, num_iters=100, max_workers=8):
    """
    Use a ProcessPool from the ``concurrent.futures`` module to execute ``num_iters``
    number of instances of ``pynac_func``.  This function takes advantage of ``do_single_dynac_process``
    and ``pynac_in_sub_directory``.
    """
    with ProcessPoolExecutor(max_workers=max_workers) as executor:
        tasks = [executor.submit(do_single_dynac_process, num, file_list, pynac_func) for num in range(num_iters)]
    exc = [task.exception() for task in tasks if task.exception()]
    if exc:
        return exc
    else:
        return "No errors encountered"