Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 371новая вакансия за сутки·54 593вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 604
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 396 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python8 801
  • Облачные технологии6 644
  • QA вакансии2 164
  • Android1 318
  • Инженер данных868
  • Продакт-менеджер314

Разработка

  • iOS1 230
  • Backend вакансии1 212
  • AI вакансии548
  • Fullstack вакансии499
  • Frontend вакансии423
  • Mobile вакансии28

По стеку

  • Go5 235
  • Java3 133
  • Kotlin1 120
  • Node.js1 004
  • Rust852
  • .NET659
  • PHP319
  • C++268
  • C#207

DevOps и инфраструктура

  • Kubernetes3 909
  • Linux-инфраструктура2 843
  • DevOps вакансии2 677
  • Terraform / IaC2 175
  • Мониторинг и Observability1 072
  • CI/CD915
  • SRE305
  • Кибербезопасность33

Аналитика и данные

  • Аналитик данных532
  • Data Scientist435
  • Бизнес-аналитик400
  • Системный аналитик68

Другие направления

  • Проджект-менеджер105
  • UI/UX дизайн68
  • Ручное тестирование14

По регионам

  • Вакансии в США25 825
  • Вакансии в Европе10 301
  • Работа в России3 618
  • Вакансии в Канаде2 268

По формату

  • Удалённые вакансии42 661
  • Релокация в США25 825
  • Гибридная работа5 655
  • Офисная работа4 428

По уровню

  • Senior вакансии22 630
  • Middle вакансии11 534
  • Junior вакансии3 862

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise187 вакансий
  • ASML164 вакансии
  • Grab134 вакансии
  • Celonis47 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Monzo19 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме PythonВсе вопросы
PythonMiddleТеория

Что такое корутина?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Корутина — это объект, представляющий приостанавливаемое вычисление. async def возвращает coroutine object, который не выполняется сам по себе — его нужно await-ить, обернуть в Task или запустить через asyncio.run, иначе появится warning "coroutine was never awaited".

Создание и запуск

import asyncio

async def compute(x):           # это coroutine function
    await asyncio.sleep(0.1)
    return x * 2

coro = compute(21)              # это coroutine object, тело ещё НЕ выполнялось

async def main():
    result = await coro         # вот здесь выполняется
    print(result)               # 42

asyncio.run(main())

Если сделать только compute(21) и ничего с этим объектом не сделать, Python выдаст RuntimeWarning: coroutine 'compute' was never awaited.

Определение

Корутина в Python — обобщённая функция, выполнение которой можно приостанавливать в точках await и возобновлять позже. Технически это объект типа types.CoroutineType, у него есть методы send(), throw(), close() — как у генератора, но он не реализует __iter__ и не годится для for.

Coroutine vs Task vs Future

  • Coroutine — описание работы, само по себе не исполняется.
  • Task — subclass Future, обёртка вокруг coroutine, которая планирует её на event loop через asyncio.create_task(coro). Создание Task сразу же ставит coroutine на исполнение.
  • Future — placeholder результата без привязки к корутине, его выставляет, например, low-level транспорт.

Native vs generator-based

До Python 3.5 корутины писали через @asyncio.coroutine и yield from. С 3.5 появился async def / await, а в 3.10 legacy-форма официально удалена. Современный код пишут только через native syntax.

Запуск нескольких

async def main():
    # последовательно — 0.3 сек
    a = await compute(1)
    b = await compute(2)
    # параллельно — 0.1 сек
    a, b = await asyncio.gather(compute(1), compute(2))
    # с TaskGroup (3.11+) — корректная отмена при ошибке
    async with asyncio.TaskGroup() as tg:
        t1 = tg.create_task(compute(1))
        t2 = tg.create_task(compute(2))

Подводные камни

  • Забыли await — coroutine не исполнилась, warning, баг тихий.
  • Считать, что await запускает несколько корутин одновременно — нет, это последовательное ожидание.
  • Запуск asyncio.run() внутри уже запущенного loop — RuntimeError: asyncio.run() cannot be called from a running event loop.
  • Coroutine не является thread-safe в смысле shared state — синхронизируйтесь через asyncio.Lock.
  • Smell: блокирующие вызовы (time.sleep, requests) внутри coroutine блокируют весь loop.

Частые вопросы на собеседовании

  • Что такое truthy и falsy значения в Python?
  • Когда использовать threading?
  • Что такое type hints и зачем они нужны?
  • Как работает yield?

Типичные ошибки

  • Говорить, что async def сразу выполняется.
  • Не различать coroutine object и результат.
  • Не знать warning never awaited.

Что проверяет интервьюер

  • Объясняет вызов async def.
  • Понимает await.
  • Различает coroutine и Task на базовом уровне.

Как вы знаете этот вопрос?

Проверить себя по теме Python →

Источники

  • https://docs.python.org/3/library/asyncio.html
  • https://docs.python.org/3/reference/datamodel.html

Связанные темы

Pythonasync-awaitevent-loop