Как подсчитать и отобразить в консоли кол-во работающих coroutine в asyncio.gather()

Как подсчитать и отобразить в консоли кол-во работающих coroutine в asyncio.gather()?

На периодической основе нужно отображать в консоле сколько из скольки coroutines работает.

            tasks = ( self.FetchOHCL(pair, 7*12, '2h', False, 3, 60) for pair in pairs)
            results = await aio.gather(*tasks, return_exceptions=True)

Ответы (2 шт):

Автор решения: eri

Одновременно работает только одна таска, но можно посчитать сколько из них не завершено. На таймер повесить например такую конструкцию:

count = len(filter( lambda x: x.done() == False, tasks))

Но лучше типовой вариант с wait.

pending = tasks

while pending:
    done, pending = await asyncio.wait(
        pending, 
        timeout=10, 
        return_when=asyncio.FIRST_COMPLETED
    )
    print(datetime.datetime.now(), len(pending), end='\r')

Тут принт будет отрабатывать каждые 10 секунд и при завершении каждой задачи.

→ Ссылка
Автор решения: Yuriy Tigiev

Обновил код @eri

pending = list( tasks )

    while pending:
        done, pending = await aio.wait(
                    pending, 
                    #timeout=30, 
                    return_when=aio.FIRST_COMPLETED
                )
        result = [future.result() for future in done][0]
        resultsList.append(result)
→ Ссылка