Python Процесс завершается без предупреждения или ошибки после завершения ThreadPoolExecutor - PullRequest
1 голос
/ 19 февраля 2020

У меня есть довольно стандартная 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?

...