在控制台中指定屏幕打印位置?

时间:2017-08-07 18:01:48

标签: python printing stdout

我有一个主线程产生其他线程。主线程执行定期状态检查,我打印/刷新/更新:

status = "Queued: {} | Workers: {}".format(queued_status, worker_status)
sys.stdout.flush()
sys.stdout.write("\r{}".format(status))

这很好用,但它最终会与工作线程的print语句混杂在一起。

那么,我如何将状态打印指定到顶部(它只是在适当的位置更新),并在下面打印线程?像这样:

Queued: No | Workers: 4
........................
Thread print
Thread print
Thread print

线程打印只会保持滚动(如普通终端窗口),但状态锁定在顶部。

1 个答案:

答案 0 :(得分:2)

curses模块是打印到屏幕上特定位置的常用解决方案。你仍然需要安排从一个线程打印所有文本,以避免几乎同时打印混杂在一起;这通常使用Queue.Queue(工作人员添加到队列而不是直接打印;主线程从队列中弹出,如果非空并打印)。

相关问题