
Me di cuenta varias veces de que un script de Python simple (con algunos cálculos algebraicos sencillos en un bucle) se ejecuta considerablemente más rápido (hasta un factor 6) cuando se ejecuta en una línea de comando de shell en comparación con una ejecución a través del shell de IDLE. No hay nada especial en el guión. Solo imprimo una variable de bucle para seguir visualmente el progreso del bucle.
Seguramente esta declaración impresa no puede ser la razón de la pérdida de velocidad en IDLE, ¿o sí?
¿Alguien puede explicarme por qué es esto?
Respuesta1
Sí, la declaración impresa es realmente la causa principal de la desaceleración en el modo inactivo. IDLE captura las transmisiones stdout y stderr y se ejecuta una gran cantidad de comandos Tk para representar el texto de manera adecuada. Eliminar su salida a stdout debería acelerar las cosas nuevamente.
Ver elidlelib.PyShell,idlelib.Ventana de salida, yidlelib.EditorWindowmódulos para (algunos de) la extensión de la madriguera del conejo...
Yo sugeriría usar elInicio sesiónmódulo para registrar el progreso; luego puede establecer el nivel de registro en algo más alto cuando se ejecuta en IDLE para evitar resultados en esa condición, o iniciar sesión en otro lugar que no sea la salida estándar.
Aunque yoen realidadNo lo recomendaría, algo como lo siguiente probablemente funcionemayoríadel tiempo si realmente desea poder configurar el comportamiento de manera diferente cuando se ejecuta en IDLE. Aunque realmente no deberías :-)
import sys
running_under_idle = 'idlelib' in sys.modules