Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Розуміння асинхронного програмування | Асинхронне програмування
Структурне програмування на Python

Розуміння асинхронного програмування

Свайпніть щоб показати меню

Asynchronous programming — це спосіб написання програм, які можуть обробляти багато завдань, ніби одночасно, не чекаючи завершення кожного завдання перед початком наступного. Це особливо корисно для завдань, які витрачають багато часу на очікування, наприклад, читання файлів, виконання мережевих запитів або взаємодія з базами даних. Замість блокування програми під час очікування завершення завдання, асинхронне програмування дозволяє вашому коду продовжувати виконувати інші завдання.

В основі асинхронної моделі програмування Python лежить циклічна обробка подій (event loop). Циклічна обробка подій відповідає за керування та планування завдань, які готові до виконання. Вона відстежує всі завдання, перевіряє, які з них очікують на щось (наприклад, на введення або таймер), і виконує ті, що готові. Це дозволяє вашій програмі просуватися у виконанні кількох завдань без необхідності створювати кілька потоків або процесів.

Ключовим елементом асинхронного програмування в Python є корутина. Корутини — це спеціальні функції, які визначаються за допомогою async def. Вони можуть призупиняти своє виконання у певних точках за допомогою ключового слова await, яке повідомляє циклічній обробці подій виконувати інші завдання під час очікування завершення операції. Коли очікувана операція завершується, циклічна обробка подій відновлює виконання корутини з того місця, де вона була зупинена.

Використовуючи циклічну обробку подій та корутини, можна писати ефективний і чутливий до подій код, особливо для програм, що залежать від введення/виведення. Такий підхід відрізняється від традиційного багатопотокового чи багатопроцесного програмування, оскільки уникає витрат на створення кількох потоків або процесів і натомість покладається на циклічну обробку подій для керування виконанням завдань.

import asyncio

async def greet_after_delay():
    print("Hello...")
    await asyncio.sleep(2)  # Pause here, let event loop run other tasks
    print("...world!")

# To actually run the coroutine, you need to use the event loop:
asyncio.run(greet_after_delay())

Вивід:

Hello...
...world!
question mark

Яке з наведеного найкраще описує роль циклічної обробки подій в асинхронному програмуванні Python?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 1

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 4. Розділ 1
some-alt