Sobes.tech
Back to questions
Junior — Middle
79

Можно ли создавать новые потоки внутри асинхронных функций в Python?

Companies where asked
Магнит Тех

Answer from AI

sobes.tech AI

Да, внутри асинхронных функций в Python можно создавать новые потоки. Асинхронные функции (async def) работают в рамках событийного цикла (event loop), но ничто не мешает использовать стандартный модуль threading для создания потоков.

Это может быть полезно, если нужно выполнить блокирующую операцию параллельно с асинхронным кодом.

Пример:

import asyncio
import threading

async def async_function():
    def thread_task():
        print("Выполняется в отдельном потоке")

    thread = threading.Thread(target=thread_task)
    thread.start()
    await asyncio.sleep(1)
    thread.join()

asyncio.run(async_function())

Однако стоит помнить, что потоки в Python ограничены GIL, и для CPU-интенсивных задач лучше использовать процессы (multiprocessing). Для ввода-вывода асинхронный код обычно эффективнее.