2014-04-01 28 views
1

(我正在使用Python和ArchLinux)在Python中输出文本到多个终端

我正在Python中编写一个简单的AI作为学校项目。因为这是一个学校项目,我想明确地展示它正在做什么,我的目的是让不同的终端窗口显示每个子进程的打印输出 - 一个终端显示如何解析句子,一个显示pyDatalog正在做什么,一个用于实际的输入输出聊天等,可能在两个监视器上。

从我所知道的并不多,有几种可行的方法可以解决这个问题,就是对每个子进程进行线程化处理,并从那里计算出显示内容,或者编写/使用允许我制作和配置自己的窗口的库。

那么我的问题是那些最好的方法,还是有一个简单的方法可以同时输出到多个终端。另外,如果制作我自己的窗口(当我说'制作自己的窗口'时,如果我的术语错误,我很抱歉,我的意思是用Python构建我自己的输出区域)是最好的选择,我正在寻找哪个库我应该用这个。

回答

2

所以你可以在这个方向去多个方向。您可以创建一个Tkinter(或您选择的GUI库)输出文本框并写入该文本框。这个选项会让你对如何显示数据有最大的控制。

另一种选择是通过命名管道访问多个终端。这涉及用管道产生xterm并将输出泵送到屏幕上。看到这个问题,并举例:

Using Python's Subprocess to Display Output in New Xterm Window

2

我喜欢@ ebarr的答案,而是一个快速和肮脏的方式做到这一点是写几个文件。然后您可以打开多个终端并尾随文件。

+0

要添加到此,您可以使用'tail -f'获取流式尾部,但您必须定期清理pythons stdout缓冲区。 – ebarr