2014-04-01 31 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