Три способа выполнить множество задач с asyncio
Функция для примера:
async def do_it(n):
await asyncio.sleep(random.uniform(0.5, 1))
return n
1. Последовательный вызов
async def main():
for i in range(100):
result = await do_it(i)
Такой вызов имеет смысл только тогда, когда результат одной задачи требуется для вызова следующей.
Если они независимы, то это антипаттерн, так как аналогичен простому синхронному вызову по очереди.
2. Упорядоченный результат
async def main():
tasks = [do_it(i) for i in range(100)]
results = await asyncio.gather(*tasks)
Выполняет корутины конкурентно и возвращает результат в виде списка.
Полезен когда требуется получить результаты в том же порядке в котором задачи отправлены.
3. Результат по мере готовности
tasks = [asyncio.create_task(do_it(i)) for i in range(100)]
for cor in asyncio.as_completed(tasks):
result = await cor
Так же выполняет корутины конкурентно, но не гарантирует порядок. Результат возвращается по мере готовности, каждый отдельно.
Полезен когда нужно обработать любой ответ как можно скорее.
#async
72 Hours. No trace!
#Million_Beyene has now been missing for 72 hours.
Disappeared without a trace.
He was forcibly taken from his workplace at Addis Standard newsroom, where he had continued to stand his ground and carry out his duties despite mounting pressure to walk away.
Seventy-two hours on, silence persists.
Despite repeated inquiries and appeals, no authority has provided any information about his whereabouts or condition.
#WhereIsMillion#BringMillionHome#JournalismIsNotACrime#EndEnforcedDisappearances
Vanished without a trace!
Six days after he was forcibly taken from the Addis Standard newsroom by a group of masked men, the whereabouts and conditions of journalist Million Beyene remain unknown.
Million belongs at home with his family.
#WhereIsMillion? #BringMillionHome#JournalismIsNotACrime#PressFreedom#EndEnforcedDisappearances
Five days without a trace!
It has now been five days since #Million_Beyene was taken from his work place at Addis Standard newsroom and disappeared without a trace.
Ethiopia grappling with multiple threats, a dedicated journalist who has steadfastly upheld his duty to serve the public’s right to information is one of them.
#WhereIsMillion? #BringMillionHome#JournalismIsNotACrime#PressFreedom#EndEnforcedDisappearances
96 Hours. Still Missing!
Ninety-six hours after he was taken, the whereabouts of #Million_Beyene remain unknown.
Million was forcibly removed from his workplace, where he served as a journalist, working to uphold the public’s right to access the truth. In doing so, he has now been stripped of his own freedom.
The silence is alarming.
#WhereIsMillion#BringMillionHome#JournalismIsNotACrime#PressFreedom#EndEnforcedDisappearances
#Notice: 48 hours since our colleague Million Beyene disappeared without a trace.
Addis Abeba - Forty-eight hours after he was taken, the whereabouts of #Million_Beyene, Managing Editor of Addis Standard, remain unknown.
The #newsroom has learned that his phone was briefly active at around 10:00 p.m. last night before going silent again, raising further concern about his safety and condition.
His family and colleagues are enduring growing distress.
JAKENN Publishing PLC renews its urgent call for his safe and immediate return, and urges the relevant authorities, including the Addis Ababa Police and the Federal Police Commission, to act without delay to establish his whereabouts.
We also call on the Ethiopian Human Rights Commission (#EHRC) to investigate this apparent enforced disappearance and ensure accountability.
#WhereIsMillion
#JournalismIsNotACrime
#PressFreedom
#BringMillionHome