【问题标题】:Designate screen printing location in console?在控制台中指定丝网印刷位置?
【发布时间】:2017-08-07 18:01:47
【问题描述】:

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

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

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

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

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

线程打印将继续滚动(就像普通终端窗口一样),但状态被锁定在顶部。

【问题讨论】:

  • 如果您使用的是 Linux(或者使用与 VT100 兼容的终端,或者至少支持 ANSI 控制序列的终端),这非常容易。看看stackoverflow.com/a/45164619/4014959

标签: python printing stdout


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多