Python: задачки и вопросы
7.51K subscribers
1.28K photos
2 videos
1 file
119 links
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Download Telegram
1️⃣Определены функции 𝚏𝚎𝚝𝚌𝚑 и 𝚖𝚊𝚒𝚗, но они ничего не делают сами по себе, пока не будут запущены через await/цикл событий.

2️⃣Строка 𝚌𝚘𝚛𝚘 = 𝚖𝚊𝚒𝚗() создаёт объект‑корутину 𝚌𝚘𝚛𝚘; тело 𝚖𝚊𝚒𝚗 (и, следовательно, 𝚏𝚎𝚌𝚝𝚌𝚑) при этом не исполняется.​

3️⃣Вызов 𝚌𝚘𝚛𝚘.𝚌𝚕𝚘𝚜𝚎() корректно завершает корутину, что предотвращает предупреждение «coroutine was never awaited»; метод 𝚌𝚕𝚘𝚜𝚎 доступен у корутин по спецификации.​

4️⃣Поскольку ни 𝚖𝚊𝚒𝚗, ни 𝚏𝚎𝚌𝚑 не выполнялись, строки "fetching" и "done" не печатаются; затем исполняется обычный синхронный 𝚙𝚛𝚒𝚗𝚝("after") и выводит единственную строку.

Как работает async/await
Асинхронное программирование позволяет программе не простаивать во время долгих операций (сеть, диск, база данных). Ключевое слово 𝚊𝚜𝚢𝚗𝚌 превращает функцию в корутину — объект, который можно «приостановить» на await и потом продолжить, при этом цикл событий в момент ожидания переключается на другие задачи. Для реального запуска корутины нужен либо 𝚊𝚠𝚊𝚒𝚝 внутри другой async‑функции, либо явный вызов через 𝚊𝚜𝚢𝚗𝚌𝚒𝚘.𝚛𝚞𝚗() или цикл событий.​

Подробнее
про основы асинхронности в Python и чуть глубже о том, почему мало кто на самом деле понимает как это работает.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1