Desarrollador Python: pregunta de entrevista

¿Cómo analizas un servicio Python lento?

Perfila un servicio Python lento con carga representativa: separa latencia externa de CPU y asignaciones, usa tracing y cProfile o py-spy, optimiza la ruta medida y compara con la línea base.

Respuesta directa

Qué debe cubrir una buena respuesta

Cómo funciona

Empieza por clasificar la lentitud con trazas y métricas: el tiempo esperando a la base de datos u otros servicios no es un problema de Python y ningún profiler lo arreglará. Para tiempo de CPU, py-spy se adhiere al proceso en marcha sin cambiar código y produce flame graphs bajo tráfico real; cProfile da conteos de llamadas en un script reproducible; tracemalloc o memray revelan puntos calientes de asignación. Arregla el mayor contribuyente, vuelve a medir con la misma carga y conserva los números de antes y después.

Ejemplo

Un endpoint con p95 de 800 ms gastaba 600 ms serializando un resultado ORM grande con un to_dict genérico; py-spy mostró los frames, un serializador a medida para ese endpoint lo bajó a 150 ms y una prueba de carga con la misma mezcla de solicitudes confirmó la mejora. Las consultas a base de datos ya estaban por debajo de 40 ms.

Errores frecuentes

  • Perfilar una sola solicitud en un portátil y extrapolar al tráfico de producción.
  • Microoptimizar bucles mientras una consulta N+1 domina la traza.
  • Aplicar caché o Cython antes de confirmar qué frames están realmente calientes.

Una estructura útil para responder

Responde desde tu propia experiencia.

No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.

Practica esta respuesta con MiraHint

Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.

Descargar MiraHint
Preguntas de entrevista para Desarrollador Python