首页 > 解决方案 > 当其中一个进程完成使用 concurrent.futures 时,如何杀死所有进程?

问题描述

当其中任何一个完成时,我需要杀死所有进程。这是我的代码:

with concurrent.futures.ProcessPoolExecutor() as executor:
    db_datas = [[skins, stickers, proxies_list] for skins in skins_arrays]
    results = [executor.submit(wrapper, db_data) for db_data in db_datas]
    concurrent.futures.wait(results, timeout=10, return_when=concurrent.futures.FIRST_COMPLETED)
        for f in concurrent.futures.as_completed(results):
            f_success = f.result()
            print(f_success)

我试着用它做,wait但它不起作用。

标签: pythonconcurrent.futures

解决方案


我目前没有任何测试方法,但我认为这就足够了:

with concurrent.futures.ProcessPoolExecutor() as executor:
    db_datas = [[skins, stickers, proxies_list] for skins in skins_arrays]
    results = [executor.submit(wrapper, db_data) for db_data in db_datas]
    concurrent.futures.wait(results, timeout=10, return_when=concurrent.futures.FIRST_COMPLETED)
    for f in concurrent.futures.as_completed(results):
        f_success = f.result()
        if f_success:
            executor.shutdown(wait=False, cancel_futures=True)

应该不需要额外运行一次结果。


推荐阅读