Sobes.tech
Назад к вопросам
Junior — Middle
85

Какими способами можно осуществлять асинхронное выполнение задач внутри одного процесса?

Ответ от нейросети

sobes.tech AI

В Python асинхронное выполнение задач внутри одного процесса можно реализовать следующими способами:

  1. Модуль 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())
  1. Потоки (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()
  1. Модуль concurrent.futures с ThreadPoolExecutor или ProcessPoolExecutor — для удобного управления пулом потоков или процессов.

  2. Генераторы и корутины (до появления asyncio) — более низкоуровневый способ, сейчас используется редко.

Таким образом, для асинхронного выполнения в одном процессе чаще всего используют asyncio или потоки.