2016-09-01 13 views
3

Il y a beaucoup de façons de mettre en mémoire tampon de sortie hors en Python: Disable output bufferingComment vérifier si mise en mémoire tampon de sortie est activé en Python

Ce qui me rend curieux comment puis-je savoir que le buffer de sortie est vraiment vraiment déjà hors? Quel est le moyen le meilleur et le plus simple pour le vérifier?

+0

C'est vraiment intéressant. Je doute cependant que ce soit possible parce que 'sys' est un module C, et vous ne pouvez pas faire grand-chose au-delà de ce que l'interface vous fournit. –

+0

Peut-être qu'il y a quelque chose de plus simple? Quelle est la différence évidente que nous aurions si elle était allumée ou éteinte? S'il n'y a pas de différence, nous ne nous en soucierons pas? Il pourrait avoir besoin d'un GIF pour expliquer. Je ne pense même pas qu'une image soit suffisante. –

+1

Il n'y a pas besoin de s'en préoccuper, vraiment. Tant que vous savez quand il doit être vidé, vous pouvez juste appeler 'sys.stdout.flush()' et cela fonctionnera bien si la mise en mémoire tampon est activée ou désactivée. Il y a certaines tâches où il peut être important de vider à temps, par exemple, regardez ma réponse à http://stackoverflow.com/questions/39255498/python-cgi-os-system-causing-malformed-header, mais il est pas comme si vous aviez besoin de savoir si les données sont mises en mémoire tampon ou non. C'est juste une chose intéressante à découvrir, mais je pense que dans ce cas, vous pouvez lancer une expérience. –

Répondre

1

Essayez ceci: $ python myscript.py | cat

Si c'est unbuffered, sortie de votre script affichera immédiatement sur votre terminal. Sinon, il sera tamponné par cat jusqu'à ce qu'un vidage se produise, soit déclenché par votre script ou quand il se termine.