def _parallel_execute(datasources, options, outs_dir, pabot_args, suite_names):
    original_signal_handler = signal.signal(signal.SIGINT, keyboard_interrupt)
    pool = ThreadPool(pabot_args['processes'])
    result = pool.map_async(execute_and_wait_with,
                            ((datasources, outs_dir, options, suite, pabot_args['command'], pabot_args['verbose'])
                              for suite in suite_names))
    pool.close()
    while not result.ready():
        # keyboard interrupt is executed in main thread and needs this loop to get time to get executed
        try:
            time.sleep(0.1)
        except __HOLE__:
            keyboard_interrupt()
    signal.signal(signal.SIGINT, original_signal_handler)
dataset/ETHPy150Open mkorpela/pabot/pabot/pabot.py/_parallel_execute