我试图在Kubernetes上的Python容器中使用一个简单的进度条。但是,直到完成工作并且进度条达到100%为止,它不会输出任何内容。相同的精确代码在本地Docker容器中可以完美地工作。那么Kubernetes的作用是什么使我无法看到进度条在其日志中实时更新?
进度条码:
import sys
import time
class Color:
BOLD = '\033[1m'
ENDC = '\033[0m'
ERASE_LINE = '\x1b[2K\r'
def percentage(current, total):
percent = 100 * float(current) / float(total)
return percent
class ProgressBar:
def __init__(self, total):
self._total = total
self._current = 0
self.print()
def update(self):
self._current += 1
self.print()
def print(self):
percent = percentage(self._current, self._total)
sys.stdout.write("\r")
sys.stdout.write(Color.BOLD + "[%-50s] %d%%" % ('=' * int(percent / 2), percent) + Color.ENDC)
sys.stdout.flush()
if __name__=="__main__":
print("Ready to run soon...")
time.sleep(10)
print("Running!")
pbar = ProgressBar(255)
for i in range(255):
time.sleep(0.03)
pbar.update()
答案 0 :(得分:3)
登录时,通常不需要登录以\n
结尾的完整行,而不是向人类显示TTY中的内容。我通常会建议打印而不是进度条,而不是打印10%...\n20%...\n etc
。由您决定打印当前状态的频率。
更新:
您可以更新脚本以检测终端是否为TTY,并相应地更改行为
使用此:
import os, sys
if os.isatty(sys.stdout.fileno()):