Как я должен прекратить все задачи сразу - PullRequest
0 голосов
/ 12 июня 2019

Я использую ThreadPoolExecutor для выполнения некоторых задач:

executor = ThreadPoolExecutor(max_workers=len(xxx))
tasks = [executor.submit(xxx) for x in xxx]

Затем я хочу завершить все задачи, если время ожидания:

while not all_tasks_finished(tasks):
    if datetime.now() - start_time > timedelta(seconds=60):
        # executor.shutdown(False)??

Похоже, что executor.shutdown () не будет выполнен, пока не будут выполнены все задачи. Интересно, есть ли какая-либо функция для завершения задач, которые не были завершены

1 Ответ

0 голосов
/ 12 июня 2019

попытка отмена фьючерса , возвращенного отправкой, сначала:

while not all_tasks_finished(tasks):
    if datetime.now() - start_time > timedelta(seconds=60):
        for t in tasks:
            t.cancel()
        executor.shutdown()
...