我已经产生了N
进程并监控它们的状态。所以,我想N
在屏幕上打印行,每行的状态都在变化。
如何用python做到这一点?
我不希望看到重新打印。有没有类似tqdm
更新的图书馆?
您可以使用几个终端转义码来做到这一点:
def up(lines=1):
clearline = '\033[2K' # clear a line
upline = '\033[1A' # Move cursor up a line
for _ in range(lines):
sys.stdout.write(upline)
sys.stdout.write(clearline)
在此之后,您可以重新打印您的状态行。接着:
sys.stdout.flush()
这是一个完整的工作程序来证明这一点:
import sys
from time import sleep
def up(lines=1):
clearline = '\033[2K' # clear a line
upline = '\033[1A' # Move cursor up a line
for _ in range(lines):
sys.stdout.write(upline)
sys.stdout.write(clearline)
num_lines = 3
for i in range(10):
for l in range(num_lines):
sys.stdout.write('{} hello\n'.format(i*l+i))
sys.stdout.flush()
sleep(0.5)
up(num_lines)
当然,如果你正在制作一个完整的 tui,你会想要使用诸如 curses 或urwid 之类的东西