我有一个问题,我想在 XTerm 中运行的 Python 脚本同时输出太多行,这最终使脚本崩溃并显示错误消息:
close failed in file object destructor:
sys.excepthook is missing
lost sys.stderr
如何限制线路输出速率以免发生这种情况?我读到这在例如 tmux 中是可能的根据这个,但我找不到 XTerm 的任何类似选项。有什么帮助吗?
答案1
我怀疑限制 xterm 显示数据的速率(从伪终端主端读取数据)会产生任何影响。如果有的话,问题更有可能是相反的(xterm 读取速度不够快,因此 pty 缓冲区已满,因此写入尝试可能会阻塞或返回,并且使用非阻塞模式按请求写入的数据较少)
您始终可以通过管道传输输出(和/或错误),以pv -qL1000
将输出速度减慢至 1000 B/s
myscript | pv -qL1000
或者说myscript
stdout 仍然是一个终端:
socat -u 'exec:myscript,commtype=pty,raw' - | pv -qL1000