如何在 Kubernetes 中使用 tqdm

Posted

技术标签:

【中文标题】如何在 Kubernetes 中使用 tqdm【英文标题】:How to use tqdm in Kubernetes 【发布时间】:2021-01-01 00:46:26 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

kubectl attach <pod_name>

代替:

kubectl logs <pod_name>

【讨论】:

【参考方案2】:

不幸的是,到目前为止,我也没有找到令人满意的答案。例如,取决于您是使用 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)

【讨论】:

以上是关于如何在 Kubernetes 中使用 tqdm的主要内容,如果未能解决你的问题,请参考以下文章

如何在GO语言中使用Kubernetes API?

如何将 kubectl 命令用于在 Rancher 中使用 docker 运行的 kubernetes?

如何在 Kubernetes 中获取容器的磁盘使用情况(没有 docker 命令)?

如何在 kubernetes 中使用 windows 容器挂载卷?

如何在Kubernetes CI管道中使用Gradle守护程序?

如何在 Kubernetes 中对外公开 StatefulSet 的无头服务