在主函数返回后保持ThreadPoolExecutor运行

时间:2019-03-02 20:53:46

标签: python-3.x concurrency threadpoolexecutor

以前我有一个可以简化为的功能:

Class A():
    def _run(id):
       # do_something
       return

    def run():
        for id in id_list:
            proc = Process(
                target=self._run,
                args=(id),
            )
            proc.start()
        return

即使在run()函数返回后,在run()中创建的子流程也将继续运行。

现在,建议我使用concurrent.futures。所以我修改了一下代码:

def run():
    executor = ThreadPoolExecutor(max_workers=len(id_list))
    for id in id_list:
         executor.submit(self._launch, (id))
    return

但是似乎线程根本不运行。是因为run()返回后执行程序被清除了吗?我也尝试使用ProcessPoolExecutor,但后来得到TypeError: can't pickle _thread.lock objects

有人可以帮助我了解为什么ThreadPoolExecutor不能按预期工作吗?

0 个答案:

没有答案