Назад к вопросам
Junior — Middle
85
Какими способами можно осуществлять асинхронное выполнение задач внутри одного процесса?
Ответ от нейросети
sobes.tech AI
В Python асинхронное выполнение задач внутри одного процесса можно реализовать следующими способами:
- Модуль
asyncio— позволяет писать асинхронный код с использованием корутин, событийного цикла и ключевых словasync/await.
import asyncio
async def task():
print('Начало задачи')
await asyncio.sleep(1)
print('Задача завершена')
async def main():
await asyncio.gather(task(), task())
asyncio.run(main())
- Потоки (
threading) — позволяют выполнять несколько потоков параллельно, полезно для задач, связанных с вводом-выводом.
import threading
import time
def task():
print('Начало задачи')
time.sleep(1)
print('Задача завершена')
threads = [threading.Thread(target=task) for _ in range(2)]
for t in threads:
t.start()
for t in threads:
t.join()
-
Модуль
concurrent.futuresсThreadPoolExecutorилиProcessPoolExecutor— для удобного управления пулом потоков или процессов. -
Генераторы и корутины (до появления
asyncio) — более низкоуровневый способ, сейчас используется редко.
Таким образом, для асинхронного выполнения в одном процессе чаще всего используют asyncio или потоки.