Emacs/Python: ejecutando python-shell en modo de línea en búfer frente a bloque en modo de búfer
output-buffering (1)
En una pregunta y respuesta relacionada aquí , alguien hipotetizó que python-shell dentro de emacs (23.2) estaba bloqueado en bloque en lugar de buffer de línea. La solución recomendada era agregar sys.stdout.flush () al lugar en mi secuencia de comandos donde quiero que stdio descargue su contenido a python-shell.
¿Hay alguna forma de engañar a python-shell (ejecutándose en emacs 23.2 en Windows, no en Linux) ya sea a) pensando que está conectado a un TTY ob) usando el modo de buffer de línea en lugar de buffer de bloqueo? No veo por qué podría hacer esto en IDLE pero no en emacs.
Prefiero personalizar emacs que agregar sys.stdout.flush () a todos mis scripts. Llámame flojo :-).
Gracias,
Micro
Para aquellos que se preguntan, creo que el comportamiento relevante se analiza aquí , en emacs "7. Subprocesos / 7.3 Almacenamiento en búfer en shells y subprocesos".
"En un búfer de shell, stdout es un identificador de tubería y, por lo tanto, está almacenado en bloques. Si desea que el comportamiento de almacenamiento en búfer de su programa se comporte de manera diferente, el programa tendrá que cambiarse; puede usar setbuf y setvbuf para manipular la semántica de almacenamiento en búfer ".
Resuelto agregando lo siguiente a mi init.el (vea este enlace SO aquí para más detalles):
(setenv "PYTHONUNBUFFERED" "x")