Три способа выполнить множество задач с 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
🇷🇺🇺🇳 Foreign Minister Sergey Lavrov & Secretary-General of the United Nations António Guterres meet on the sidelines of the UN General Assembly's 77th Session's High-Level Week.
#UNGA77
#UNCharterIsOurRules
🇺🇳 The High-Level Week of the 77th Session of the UN General Assembly has come to an end.
#Day4 main highlight 👉 FM Sergey Lavrov's Remarks at the General Debate.
The Minister touched upon the most topical issues on the international agenda.
📹 The essence of the speech in 1 minute.
#UNGA77
🇺🇳 The UN HQ is where it's at! The High-Level Week of the 77th UNGA Session continues as does our coverage!
🎥 On #Day3 (Sept 23), the Russian delegation led by Sergey Lavrov kept busy. Sorry to disappoint certain Western colleagues, but no "isolation" in sight:
• Talks with President of Serbia and President of Guinea-Bisau
• Talks with Chairman of the Transitional Sovereignty Council of Sudan
• Meetings and talks with Foreign Ministers of Serbia, Мexico, Ethiopia, Nicaragua, Laos, Jordan, Syria, Eritrea, Cuba, Equatorial Guinea, Mali, the UAE!
• Russia – Gulf Cooperation Council Ministerial
Stay tuned and follow our updates from New York!
#UNGA77
🛑#LIVE: Foreign Minister Sergey #Lavrov gives speech at the UNSC meeting on Ukraine
🔗https://www.ruptly.tv/en/events/202209221400-LIVE11963-UN-Security-Council-holds-high-level-debate-on-Ukraine
🔗https://mid.ru/en/press_service/video
🔗https://media.un.org/en/webtv
#UNGA77
Off we go! 🇺🇳
#Day1 highlights!
On September 21, Sergey Lavrov arrived to the United Nations Headquarters in New York to participate in the 77th Session of the UN General Assembly (#UNGA77).
🤝 On the first day the Minister's working schedule was packed:
• Working meeting of CSTO Foreign Ministers
• Talks with President of the CAR Faustin-Archange Touadéra and President of Switzerland Ignazio Cassis
• Meetings with Ministers of Foreign Affairs of China, Brazil, Bolivia and Egypt
• Meetings with President of the ICRC Peter Maurer and IAEA Director General Rafael Mariano Grossi
• Meeting in the Astana Format
• The signing of The Inter-Ministerial Consultations Plan between the Foreign Ministries of Russia and Venezuela
• Talks with President of the 77th UNGA session Csaba Kőrösi
Stay tuned for #Day2. Coming next!
Off we go! 🇺🇳
#Day1 highlights!
On September 21, Sergey Lavrov arrived to the United Nations Headquarters in New York to participate in the 77th Session of the UN General Assembly (#UNGA77).
🤝 On the first day the Minister's working schedule was packed:
• Working meeting of CSTO Foreign Ministers
• Talks with President of the CAR Faustin-Archange Touadéra and President of Switzerland Ignazio Cassis
• Meetings with Ministers of Foreign Affairs of China, Brazil, Bolivia and Egypt
• Meetings with President of the ICRC Peter Maurer and IAEA Director General Rafael Mariano Grossi
• Meeting in the Astana Format
• The signing of The Inter-Ministerial Consultations Plan between the Foreign Ministries of Russia and Venezuela
• Talks with President of the 77th UNGA session Csaba Kőrösi
Stay tuned for #Day2. Coming next!