为了澄清一些答案。
ruby
或python
任何明智的脚本语言将缓冲输出;这是为了最大程度地减少IO;写入磁盘速度很慢,写入控制台速度很慢…- 通常
flush()
,在缓冲区中有足够的数据并且对换行符进行特殊处理之后,数据会自动被编辑。例如,编写不带换行符的字符串,则sleep()
在sleep()
完成之后才写任何东西(我仅sleep
作为示例,可以用任何其他昂贵的系统调用代替)。
例如,这将等待8秒,打印一行,再等待5秒钟,打印第二行。
from time import sleepdef test(): print "ok", time.sleep(3) print "now", time.sleep(5) print "done" time.sleep(5) print "again"test()
为
ruby
,STDOUT.sync =true
打开autoflush
;所有写入STDOUT
后跟flush()
。这样可以解决您的问题,但会导致更多的IO。STDOUT.sync = true
对于
python
,您可以使用python -u
或环境变量PYTHONUNBUFFERED
来使它stdin/stdout/stout
不被缓冲,但是还有其他解决方案不会改变stdin
或stderr
export PYTHonUNBUFFERED=1
对于
perl
,你有autoflush
autoflush STDOUT 1;



