Вопрос проверяет понимание методов измерения производительности и особенностей многопоточности в Python.
Производительность оценивают с помощью профилирования, логирования времени выполнения и нагрузочного тестирования. Используются инструменты cProfile, time и различные бенчмарки. Важно учитывать, является задача CPU-bound или IO-bound. Это влияет на эффективность потоков.
Оценка производительности многопоточного приложения требует измерений, а не предположений.
Самый простой способ:
import time
start = time.time()
# выполнение задачи
print(time.time() - start)
Это даёт базовое понимание времени выполнения.
Для более точного анализа используют профилировщики.
cProfile показывает:
какие функции занимают больше всего времени
сколько раз они вызываются
Пример:
python -m cProfile app.py
В Python:
потоки не ускоряют CPU-bound задачи
потоки хорошо подходят для IO-bound задач
Примеры IO-bound задач:
HTTP-запросы
работа с файлами
работа с БД
Если приложение работает как сервис, важно тестировать под нагрузкой:
Инструменты:
locust
ab
wrk
Это показывает:
количество запросов в секунду
задержки
узкие места
На практике анализируют:
latency
throughput
CPU usage
memory usage
Оценка производительности — это комбинация профилирования, нагрузочного тестирования и анализа метрик, при этом важно учитывать ограничения многопоточности Python.