【问题标题】:Python Terminal Text Output FormattingPython终端文本输出格式
【发布时间】:2016-04-22 16:38:37
【问题描述】:

我有一个 python 程序,它以这种方式向我的终端输出一些 numpy 矩阵和一些其他信息:

目前,要查看数据,我遵循以下顺序:

  1. 打印数据
  2. 清屏
  3. 重新打印(并重复)

但是,这确实是低效的。我希望能够看到随着程序运行而变化的数字,但没有屏幕清除的开销。有没有办法可以使用本机 python 格式化我的输出,这样我就不必进行这种昂贵的操作了?我的想法是我可以拥有类似 htop 的东西(或类似的格式化终端程序,例如 cmus)。

【问题讨论】:

标签: python numpy terminal formatting output


【解决方案1】:

为什么清屏这么贵?终端很可能有一个固定大小的缓冲区,当旧行“向上滚动”时会被覆盖。重写输出可能需要几毫秒(或更多,取决于它有多大)。 如果输出确实很大,请考虑另一种方法,例如对矩阵进行切片并仅输出更改的内容或使用绘图来检查您的数据(提示:矩阵可以显示为图像)。 如果您真的需要在终端上“固定”显示,那么 curses 模块是可行的方法,但是您的输出不能那么大,否则无论如何它都不适合终端窗口。如果您需要实现滚动,请考虑迁移到图形用户界面。

【讨论】:

  • 在我的服务器(脚本正在运行的地方)上,由于未知原因,该过程明显变慢。此外,清屏会导致大量闪烁,使任何数据难以读取(主要用于更改)
  • 数字变化非常频繁吗?仅在某些更改起作用时才刷新显示吗?如果没有,你真的需要curses
  • 大多数数字保持不变,并且脚本已经仅在满足某些更改时才打印,因此更改想法已经存在。看起来对我来说是curses
【解决方案2】:

你可以使用watch shell 命令

如果它是一个python脚本或者可以转换成一个独特的python脚本

watch -n 1 'python xxx.py'

1是刷新时间

-d 突出显示更新之间的变化

【讨论】:

  • 我考虑过这个,但我不知道我的程序的确切刷新率,不过-d 选项非常好!
  • 您需要超过 1 秒的速度吗?或者脚本打印其他如果没有准备好?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 2014-04-10
  • 2019-05-08
  • 2020-06-13
  • 2017-09-16
  • 1970-01-01
相关资源
最近更新 更多