Асинхронний Python
В цій статті перейдемо до практики асинхронного програмування, а також порівняння синхронного та асинхронного коду. Розробляти будемо програму, яка здійснює сотню запитів до різних веб-адрес. Для синхронного коду використаємо класну бібліотеку для запитів - Requests.
1 | def jumbotron(): |
Скрипт почергово проходить по 100 url-ам і завантажує відповідну сторінку. Асинхронний код виглядає не набагато складніше, але дозволяє значно прискорити цей процес. Для запитів використовуємо бібліотеку aiohttp.
1 |
|
Тепер заміряємо час виконання для обох варіантів:
1 | start = time.time() |
для синхронного і
1 | start = time.time() |
відповідно для асинхронного. На моєму комп’ютері результати були 15 секунд проти 0.3 секунди. Тобто швидкість зросла в мільярд* разів. Також цей код можна переписати в якості грабера (можна завантажувати і зберігати картинки/музику/файли).
* - мільярд: абстрактне число, що використовується для підкреслення значущості деякої величини та її безперечної переваги над інишими