Принудительно завершить поток с помощью ThreadPoolExecutor, не блокируя выполнение? - PullRequest
0 голосов
/ 01 мая 2020

Допустим, у меня есть функция, которая должна возвращать после запуска задач в пул, что-то вроде (просто пример):

def launch_tasks(num_tasks, args):
    futures = []
    for x in range(num_tasks):
        futures.append(pool.submit(my_func, args))
    print("Launched.")

Функция my_func() запишет свой вывод в файл, поэтому мне не нужно постоянно проверять его возвращаемое значение. Тем не менее, я хочу отменить его выполнение, если определенное время ожидания выполнено. Есть ли способ заставить эту обработку завершиться sh после заданного времени ожидания в python? Если да, могу ли я сделать функцию обратного вызова по тайм-ауту?

Я на самом деле разрабатываю приложение Flask, поэтому я действительно не хочу, чтобы на него накладывался код, который блокировал бы выполнение (например, ожидание as_complete(timetout)), потому что я хочу вернуть что-то вызывающему запросу вместо того, чтобы заставлять его ждать, пока выполнение не завершится.

Я думал о запуске потока, который запустит другой, и затем ожидании as_complete(timeout), но это, кажется, не лучший подход к этому.

...