如何在 Kubernetes 中使用 tqdm

Pil*_*hae 5 kubernetes tqdm kubeflow

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

Gal*_*e33 11

我没有一个好的解决方案,但这对我有帮助:

如果您使用以下命令,tqdm 进度条将按预期显示:

kubectl attach <pod_name>
Run Code Online (Sandbox Code Playgroud)

代替:

kubectl logs <pod_name>
Run Code Online (Sandbox Code Playgroud)


小智 1

不幸的是,到目前为止我还没有找到令人满意的答案。例如,根据您使用的是 kubectl 还是 k9s,甚至是 tqdm 中的迭代看起来如何,或者您通过日志模块等其他方式记录的内容,结果可能会有很大不同,从根本不显示进度条,到偶尔刷新数十次迭代。我发现获得一致的 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)
Run Code Online (Sandbox Code Playgroud)