在屏幕环境下,tqdm打印新行和未知字符

9

当我在screen中使用tqdm时,它会无限制地打印新行,并在进度条中输出未知字符。

Epoch 0:   5%|��                           | 255/5474 [03:31<1:12:09,  1.21it/s]
Epoch 0:   2%|�                             | 90/5474 [01:24<1:23:46,  1.07it/s]
Epoch 0:   2%|�                             | 89/5474 [01:23<1:23:57,  1.07it/s]

我使用了默认的 shell bash 并添加了以下配置。
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8

root@35573c9f245c:~/git/pytorch-openai-transformer-lm# cat ~/.screenrc 
# ~/.screenrc
defshell -bash      # dash makes it a login shell

相同的代码在其他终端上可以正常运行。

有关此问题的任何提示?谢谢!

2个回答

10
正如你所猜测的那样,问题是由于未知字符引起的。以 UTF-8 模式运行 screen 将解决该问题:
screen -U

4

在调用 tqdm 函数时,尝试包含参数 ascii=True 以处理 screen 不支持 UTF-8 的问题。可以像下面这样实现:

for item in tqdm(items, total=len(items), ascii=True):
        pass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接