Некоторые причины, по которым ThreadPoolExecutor может некорректно завершать выполнение задач:
Неправильное использование функции shutdown(). superfastpython.com tiewkh.github.io В Python 3.7 и 3.8 она только останавливает ThreadPoolExecutor от приёма новых задач. tiewkh.github.io Если одна из задач завершается с ошибкой, другие, которые ещё не начали выполняться и находятся в очереди задач исполнителя, не отменяются. tiewkh.github.io В Python 3.9 функцию обновили, чтобы пользователи могли отменять незапущенные задачи в очереди исполнителя. tiewkh.github.io
Неправильная подача задач. superfastpython.com Рекомендуется, чтобы задачи подавались в ThreadPoolExecutor только из одного контекста, например, из точки в программе, где ThreadPoolExecutor создан и закрыт. superfastpython.com Для этого можно использовать очередь или другую структуру данных, которая соединит функции задач или функции обратного вызова с основным потоком. superfastpython.com
Неотловленные ошибки. javarush.com Если код падает с ошибкой, которую не отлавливают, а проглатывают, то кажется, что поток начал выполнять следующий код, пока идёт ожидание. javarush.com На самом деле попытка ожидания упала в ошибку, и выполнение кода прекратилось. javarush.com
Для выявления причин некорректного завершения задач и их устранения рекомендуется обратиться к специалисту.
Примеры полезных ответов Поиска с Алисой на вопросы из разных сфер. Вопросы сгенерированы нейросетью YandexGPT для актуальных тем, которые определяются на базе обобщённых запросов к Поиску с Алисой.