2016-12-11 5 views
2

私は、並列スレッドを実行しているコマンドラインツールを持っています。これらのスレッドはコマンドラインに出力されます。プログラム全体をスローせずにスレッド完了時にコマンドラインのテキスト出力をロックするには?

私が抱えている問題は、コマンドラインのプロンプトが複数のスレッドからテキストを同時に出力して混乱していることです。

ロガーはまた、テキストのプロンプトがぶら下がります。

私はすべてのコマンドラインプロンプトが可変ロック表示モジュールに出力できると想像することができます。しかし、これは重要なコードリファクタリングです。さらに、コードを遅くします。

この問題を解決する簡単な方法はありますか?

答えて

0

print()関数を使用してスレッドがデータを出力する場合は、スレッドを開始する前に独自の印刷機能を組み込むことができます。あなたのプリントは出力をキューに格納することができますが、コードの処理速度は低下しません(しかし、キューは大きくなります)。新しいシングルスレッドは、キューからデータを読み込み、それをディスプレイに書き込みます。

+0

同時スレッドがコマンドラインに印刷しています。ロガーもあります。現在、私はすべてのコマンドラインプロンプトをメニューとディスプレイ出力モジュールで実行しています。私はそれらのモジュールがブロックでキューを介して出力を表示するようにすることができました。しかし、ロガーがいつコマンドラインに投稿されるのかを私はどのように知っていますか?ブロック表示ブロックが起動し、同時にロガーがコマンドラインに同時に投稿すると、私はまだ同じ問題を抱えていますか?あるいは、私はあなたの提案したアーキテクチャで何かを逃していますか? – Emily

+0

メニューとディスプレイの出力モジュールは何か分かりませんが、ロガーを同じキューに接続することはできませんか? – Gribouillis

+0

私はPythonsロギングモジュールを使用しています。表示モジュールを使用する方法でストリーム出力を定義する方法は決して見つけられませんでしたか?誰でもこれを行う方法を知っていますか? – Emily

関連する問題