Встречается на собеседованиях • сегодня

Как писали асинхронный код до появления async/await

До async/await в Python использовались различные подходы для асинхронного программирования:

  1. Callback-функции (как в Node.js) - передача функций, которые вызываются при завершении операции:
python
def callback(result):
    print("Got result:", result)

def async_op(callback):
    # Имитация долгой операции
    import time
    time.sleep(1)
    callback(42)

async_op(callback)

text

2. **Генераторы и yield** - использовали yield для приостановки выполнения:
```python
def async_op():
    yield "start"
    yield "processing"
    yield "done"

coroutine = async_op()
print(next(coroutine))  # start
print(next(coroutine))  # processing
  1. Twisted/Gevent - популярные библиотеки:
  • Twisted использовал Deferred-объекты (аналог промисов)
  • Gevent использовал monkey-patching для переключения контекста
  1. asyncio до async/await - использовал декоратор @asyncio.coroutine и yield from:
python
@asyncio.coroutine
def old_style_coro():
    yield from asyncio.sleep(1)
    return "done"

Эти подходы были менее читаемыми и требовали больше boilerplate-кода по сравнению с современным async/await.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы