如何在 Kubernetes 中使用 tqdm

9

我正在使用Kubernetes,并在集群上运行一个训练作业。 我使用TQDM作为进度条,但是与我的预期不同的是,当我检查Kubernetes Pod日志时,进度条没有显示出来。有没有人有解决这个问题的方法?

2个回答

10
我没有一个很好的解决方案,但这个方法对我有帮助: 如果你使用tqdm进度条,它将如预期地显示,只需使用以下代码:
kubectl attach <pod_name>

替代:

kubectl logs <pod_name>

1
很遗憾,我也没有找到一个令人满意的答案。这取决于你使用 kubectl 还是 k9s,或者 iterable 在 tqdm 中的表现方式,或者通过 logging 模块记录的其他内容,结果可能大相径庭,从根本上没有显示进度条,到偶尔刷新几十个迭代。我发现唯一保持 Kubernetes 日志一致性的方法是在每次迭代中自己打印它们,并将 tqdm 输出重定向到其他地方。
例如如下所示:
import time
import sys
from tqdm import tqdm

iterator = tqdm(range(99), file=open("/dev/null", "w"))

for x in iterator:
    print(iterator.__str__())
    sys.stdout.flush()
    time.sleep(0.2)

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