Usa asyncio para E/S de mucho volumen donde quieres miles de esperas concurrentes en un solo hilo, hilos para trabajo de E/S en el que solo hay librerías bloqueantes disponibles, y procesos para trabajo con carga de CPU que necesita núcleos de verdad. Las preguntas que deciden son si el trabajo espera o calcula, y si las librerías de las que dependes ofrecen una interfaz asíncrona.
Por qué lo preguntan los entrevistadores
Las decisiones de concurrencia son donde los ingenieros junior queman semanas. El entrevistador quiere una regla de decisión más que una preferencia, además de que seas consciente de los costes de cada modelo: la memoria y la serialización de los procesos, la seguridad entre hilos y los cambios de contexto, y el hecho de que una sola llamada bloqueante descuidada atasca un event loop entero. Mencionar que se combinan, como un thread pool executor dentro de asyncio, demuestra experiencia práctica.
Cómo estructurar tu respuesta
- Primero divide el problema entre esperar y calcular.
- Asocia cada categoría a un modelo de concurrencia.
- Nombra un coste de cada opción.
- Da un ejemplo concreto de tu propio trabajo.
Ejemplo de respuesta
Mi primera pregunta siempre es si el trabajo espera o si calcula, porque esa respuesta elige la herramienta. Esperar en red o en disco significa asyncio si las librerías cliente lo soportan, porque un event loop mantiene tan tranquilo diez mil sockets abiertos en un núcleo y la memoria por tarea es mínima. Si el único driver disponible es bloqueante, uso un thread pool, porque un hilo aparcado en una lectura de socket libera el lock y no cuesta casi nada. Calcular significa procesos, o bajar a una librería nativa que suelte el lock por su cuenta. En un servicio en el que trabajé teníamos las dos cosas en la misma ruta de petición: un handler asíncrono repartiendo llamadas a seis APIs internas con gather, y una llamada a run_in_executor envolviendo un SDK bloqueante antiguo que no podíamos sustituir. Esa combinación vale la pena nombrarla en una entrevista porque la mayoría de los sistemas reales son mixtos. El error que vigilo es que alguien meta una transformación pesada de pandas dentro de una corrutina, porque entonces el loop deja de atender todo lo demás mientras se ejecuta.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Qué es lo primero que se rompe cuando escalas un thread pool?
- ¿Cómo compartes estado entre procesos?
- ¿Dónde encaja un task group en ese panorama?
Más preguntas para Desarrollador Python
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas