使用concurrent.futures时如何处理/显示错误/异常

2024-10-02 14:21:08 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用带有多处理/多线程的python中的新concurrent.futures库时。如何公开错误以便显示它们

我故意用一个不存在的变量在get_user_object中引入了一个错误。我希望这里会抛出一个错误,但是程序会立即挂起/完成

import concurrent.futures
import multiprocessing as mp


def get_user_object(batch, doesent_exist):

    with _COUNTER.get_lock():
        _COUNTER.value += 1
        print(_COUNTER.value, end=' ')

    #error here
     print(variable_that_doesent_exist)


def init_globals(counter):
    global _COUNTER
    _COUNTER = counter


def main():
    counter = mp.Value('i', 0)
    with concurrent.futures.ProcessPoolExecutor(
        initializer=init_globals, initargs=(counter,)
    ) as executor:
        for _ in executor.map(get_user_object, range(10)):
            pass
    print()


if __name__ == "__main__":
    import sys
    sys.exit(main())

Tags: importgetobjectmaindefas错误counter