Python的解释器默认启用输出缓冲sys.stdout吗?
如果答案是肯定的,那么禁用它的所有方法是什么?
建议到目前为止:
-u命令行开关sys.stdout在每次写入后刷新的对象PYTHONUNBUFFEREDenv varsys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)是否有任何其他方式来设置一些全局标志sys/ sys.stdout程序执行过程中?
通常,stdout是行缓冲的.换句话说,只要您的printf参数以换行符结尾,您就可以立即打印该行.使用管道重定向时,这似乎不成立tee.
我有一个C++程序,a它输出字符串,总是被\n终止stdout.
当它由它自己运行时(./a),所有内容都在正确的时间正确打印,正如预期的那样.但是,如果我将它传递给tee(./a | tee output.txt),它会在它退出之前不会打印任何内容,这会使使用的目的失效tee.
我知道我可以通过fflush(stdout)在C++程序中的每次打印操作之后添加一个来修复它.但是有更清洁,更简单的方法吗?例如,是否有一个命令可以运行stdout,即使使用管道也会强行进行行缓冲?
我有一个长期的rake任务.我不时地在屏幕上打印更新,让我知道任务的进展情况.
puts "Almost there..."
Run Code Online (Sandbox Code Playgroud)
我的问题是所有的puts语句似乎都在某处缓冲,直到任务完成后才会打印到屏幕上.此时,它们将立即打印出来.
在任务运行时是否有某种方法强制它们打印?
我有一个Python脚本打印字符串.现在,当它在Jenkins中运行时,我没有在Jenkins Builds的控制台输出中看到打印的字符串.
无论如何要实现这一目标?
我在一段代码中找到了类似的东西:
use IO::Handle;
autoflush STDOUT 1;
print '';
Run Code Online (Sandbox Code Playgroud)
"打印"的目的是清空可能填充的缓冲区吗?