2010-05-21 11 views
5

En una pregunta y respuesta relacionada here, alguien planteó la hipótesis de que python-shell dentro de emacs (23.2) estaba bloqueado en lugar de búfer 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.Emacs/Python: ejecutando python-shell en modo línea protegida frente a bloque amortiguado

¿Hay alguna manera 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 un modo de buffer de línea en lugar de buffer? No veo por qué podría hacer esto en IDLE pero no en emacs.

Prefiero personalizar emacs que agregar sys.stdout.flush() en todos mis scripts. Llámame flojo :-).

Gracias,

Mike

Respuesta

4

Para los que preguntan, creo que el comportamiento relevante se discute here, en emacs "7. Los subprocesos \ 7.3 búfer en conchas y subprocesos".

"En un búfer de caparazón, stdout es un manejador de tubería y por lo tanto está almacenado en bloques. Si desea que el comportamiento del programa de almacenamiento en búfer 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 ".

solucionado añadiendo lo siguiente a mi init.el (véase este enlace SO here para más detalles):

(setenv "PYTHONUNBUFFERED" "x") 
+0

1 auto-respuestas son buenas para el SO – msw

Cuestiones relacionadas