Как решишь проблему задач, требующих много времени
Python
Middle
Без компании
Как решишь проблему задач, требующих много времени
Ответы
Для решения долгих задач в Python можно использовать несколько подходов:
- **Асинхронность** (asyncio) - для I/O-bound задач:
```
import asyncio
async def long_task():
await asyncio.sleep(5) # Имитация долгой операции
return "Готово"
async def main():
result = await long_task()
print(result)
asyncio.run(main())
```
- **Многопоточность** (threading) - для I/O-bound задач с блокирующими вызовами:
```
from threading import Thread
def long_task():
import time
time.sleep(5)
print("Готово")
thread = Thread(target=long_task)
thread.start()
```
- **Мультипроцессинг** (multiprocessing) - для CPU-bound задач:
```
from multiprocessing import Process
def cpu_intensive():
# Тяжелые вычисления
pass
p = Process(target=cpu_intensive)
p.start()
```
- **Очереди задач** (Celery/RQ) - для фоновой обработки в продакшне.
Ключевые моменты:
- Выбирай подход в зависимости от типа задачи (I/O vs CPU-bound)
- Для веб-приложений используй асинхронные фреймворки (FastAPI, Quart)
- Для тяжелых вычислений - multiprocessing или вынос в отдельный сервис
- Всегда учитывай накладные расходы на создание потоков/процессов