使用python的多个屏幕



我有一个运行两个大进程的python脚本,当我运行它们时,它们都被触发并在同一个stdout中产生输出。我要找的是,我想在不同的标准输出中打印它们(可能是screen1中的process1和screen2中的process2)

#main.py
def proc1():
    #do something
def proc2():
    #do something
p1 = threading.Thread(target=proc1)
p2 = threading.Thread(target=proc2)
p1.start()
p2.start()

我需要的是p1应该在一个屏幕上运行,p2应该在另一个屏幕上运行,以查看运行日志,易于理解和调试。这可能吗?

如果你不能改变输出的位置,而它必须是标准输出,那么这是不可能的,因为流将以交错的方式在标准输出缓冲区中排队,并且没有办法区分哪个文本来自哪个流。

如果你真的想在不同的屏幕上看到两个不同流的实时输出,你可以在一个文件上写第二个输出(或者两个都在不同的文件上),比如output2.txt,然后在另一个终端上,使用tail -f从那个文件进行实时读取。

从手册页:

-f选项导致tail在到达文件末尾时不停止,而是等待附加到输入的其他数据。-f选项如果标准输入是管道,则忽略,但如果是FIFO则不忽略。

因此,假设您将两个输出写入两个不同的文件output1.txtoutput2.txt,您可以以以下方式运行脚本: 屏幕1:

python script.py

屏幕2(用于查看线程1的输出):

tail -f output1.txt

屏幕3(用于查看线程2的输出):

tail -f output2.txt

或者,如果您希望一次只有两个活动屏幕,您可以只将第一个线程输出输出到标准输出中。

注:实际上,你不是有两个进程,而是有两个线程。这是两码事,不要混淆。

相关内容

  • 没有找到相关文章

最新更新