温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - Get progress in ThreadPoolExecutor
multithreading python python-3.6 python-asyncio

python - 在ThreadPoolExecutor中取得进展

发布于 2020-03-27 10:44:59

我正在使用asyncio(在python 3.6中)安排多个异步任务。

在以下示例中:

import concurrent.futures
import time
import asyncio

def long_task(t):
    print(t)
    time.sleep(1)
    return t

loop = asyncio.get_event_loop()
executor = concurrent.futures.ThreadPoolExecutor(max_workers=3)
inputs = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
futures = [loop.run_in_executor(executor, long_task, i) for i in inputs]

有没有办法获得完成任务的数量?

谢谢

查看更多

查看更多

提问者
RobinFrcd
被浏览
137
RobinFrcd 2019-07-03 22:51

我发现,asyncio Future对象具有done()函数:

from asyncio import Future
from typing import List

def get_progress(futures: List[Future]) -> int:
    return sum([f.done() for f in futures])