У меня есть довольно стандартная python реализация пула потоков в моем коде. Но неожиданно я начал обнаруживать проблему, при которой процесс завершается после запуска функции:
def func_with_threadpool_execution():
executors_list = []
with ThreadPoolExecutor(max_workers=4) as executor:
executors_list.append(
executor.submit(func1, arg)
)
executors_list.append(
executor.submit(func2, arg)
)
executors_list.append(
executor.submit(func3, arg)
)
executors_list = list(executors_list)
data_1 = executors_list[0].result()
data_2 = executors_list[1].result()
data_3 = executors_list[2].result()
data_4, data_5 = collect_data_from_other_sources()
processed_data = process_all_data(data_1, data_2, data_3, data_4, data_5)
aggregated_data = aggregate_all_data(processed_data)
return aggregated_data
Эта функция вызывается какой-то другой функцией в программе. Здесь я сталкиваюсь со странной ситуацией. Весь процесс python завершается без каких-либо исключений или предупреждений, когда возвращается функция func_with_threadpool_execution
. Когда я регистрирую aggregated_data
перед возвратом, он регистрируется. Но когда я делаю print(func_with_threadpool_execution)
, процесс python уже завершен и ничего не печатается.
Я обнаружил, что эта проблема возникает только в моей системе Ubuntu и работает в моей ма c и других Ubuntu системы тоже. Это работало в моей системе до последних нескольких дней. (И после этого я только перешел от единицы к гному. Я не знаю, как это может каким-либо образом привести к такой проблеме, но подумал, что должен упомянуть об этом.) Кроме того, когда я запускаю его после удаления исполнителя пула потоков, он работает.
Может кто-нибудь помочь мне исправить это или просто указать мне в правильном направлении, как отладить это. TIA.
Я работаю python 3.7.2 на Ubuntu 16.04. Иметь такую же настройку почти год. И это вызывается в flask.
Должен ли я go переустановить python?