感谢所有的评论!我最终在您的帮助下自行回答。不过,回答您自己的问题感觉很脏。
问题1:为什么打印到标准输出速度慢?
答: 打印到标准输出 并不是 天生就慢。您正在使用的终端很慢。它与应用程序端的I / O缓冲(例如python文件缓冲)几乎为零。见下文。
问题2:可以加快速度吗?
答: 是的,可以,但似乎不是从程序方面(将“打印”到stdout的那一侧)进行。为了加快速度,请使用更快的其他终端仿真器。
说明…
我尝试了一个自描述为“轻量级”的终端程序,
wterm并获得了 明显 更好的结果。下面是在
wterm同一系统上以1920x1200
运行时,我的测试脚本的输出(在问题的底部),该系统使用gnome-terminal的基本打印选项花费了12s:
-----时序摘要(每条10万行)-----打印:0.261 s写入文件(+ fsync):0.110 s用stdout = / dev / null打印:0.050 s
0.26s比12s好得多!我不知道是否
wterm更聪明地按照我的建议(以合理的帧速率渲染“可见”尾巴)来渲染屏幕,或者是否比“少”
gnome-terminal。为了我的问题,我得到了答案。
gnome-terminal是慢的。
所以-如果您运行的脚本长时间运行,感觉很慢,并且会向stdout喷出大量文本,请尝试其他终端,看看它是否更好!
请注意,我几乎是
wterm从ubuntu / debian存储库中随机提取的。
该链接可能是同一终端,但我不确定。我没有测试任何其他终端模拟器。
更新:因为必须要抓痒,所以我用相同的脚本和全屏(1920x1200)测试了一大堆其他终端模拟器。我的手动收集的统计信息在这里:
wterm 0.3秒间隔0.3秒rxvt 0.3秒mrxvt 0.4skonsole 0.6秒药师0.7s接线柱7sxterm 9sgnome终端12sxfce4端12s巴拉终端18sxvt 48s
记录的时间是手动收集的,但它们是相当一致的。我记录了最好的(ish)值。YMMV,显然。
另外,它是对其中可用的各种终端仿真器的一次有趣的浏览!我很惊讶我的第一个“替代”测试是同类中最好的。



