2016-04-22 8 views
1

私はこの方法で私の端末に、いくつかのnumpyののmatriciesや他のいくつかの情報を出力するPythonプログラムがあります。データを表示するために、現在 Terminal outputPythonのターミナルのテキスト出力整形

を、私はこの順に従います。

  1. 印刷データ
  2. クリア画面
  3. 再印刷(繰り返し)

しかし、これは本当に非効率的です。私ができるようにしたいのは、プログラムの実行中に数字が変わるのを見ることですが、スクリーンクリアのオーバーヘッドはありません。ネイティブのPythonを使用して出力をフォーマットする方法はありますか?この高価な操作をする必要はありません。アイデアは、htop(または同様のフォーマットされた端末プログラム、例えばcmus)のようなものを持つことができるということです。

ありがとうございます!

+1

-dハイライトの変更私は、これは、ライブラリのリクを使用せずに行うことができるかどうかわからないんだけど、時間をリフレッシュe 'curses' https://docs.python.org/2/howto/curses.htmlそれ以外の場合は、stdout – Will

答えて

0

なぜスクリーンをクリアするのはそのような費用ですか?端末は、固定サイズのバッファをもっている可能性が最も高く、これは古い行が「上にスクロール」して上書きされます。出力を書き直すには数ミリ秒かかります(それ以上の大きさに依存します)。 出力が実際に大量である場合は、別の方法を検討してください。行列をスライスし、変更されたものだけを出力するか、またはプロットを使用してデータを検査します(ヒント:行列は画像として表示できます)。 ターミナルで実際に「固定」ディスプレイが必要な場合は、cursesモジュールを使用しますが、出力を大きくすることはできません。そうでなければターミナルウィンドウには適合しません。スクロールを実装する必要がある場合は、グラフィカルユーザーインターフェイスに移行することを検討してください。

それはPythonスクリプトであるかのユニークなPythonスクリプトでtrasformedすることができ

時計-n 1 'パイソンxxx.py'

1である場合、あなたはwatchシェルコマンド

を使用することができます

+0

の慈悲を受けています(スクリプトが実行されている)私のサーバでは、プロセスに測定可能な速度低下があります理由は不明です。さらに、画面をクリアすると、ちらつきが多く発生し、データの読み込みが困難になります(主に変更されます)。 –

+0

数値が頻繁に変更されますか?何か変わったときにだけディスプレイをリフレッシュするだろうか?そうでなければ、本当に 'curses'が必要です。 – Cyb3rFly3r

+0

ほとんどの数字は一定のままであり、特定の変更が満たされたときにのみスクリプトが既に印刷されているので、変更のアイデアは既にそこにあります。それは私のために 'curses'になるように見えます。 –

0

アップデート

+1

私はこれを考慮しましたが、私のプログラムの正確なリフレッシュレートを知らないので、 '-d'オプションはかなり良いです! –

+0

あなたは1秒より速く必要ですか? またはスクリプトが準備ができていない場合は他を印刷しますか? – user3484569

関連する問題