
単純な Python スクリプト (ループ内で簡単な代数計算を行う) をシェル コマンド ラインで起動すると、IDLE のシェル経由で実行した場合に比べて大幅に高速化 (最大 6 倍) されることに何度か気付きました。スクリプト内で特別な処理は行われていません。ループの進行状況を視覚的に追跡するために、ループ変数を印刷するだけです。
確かに、この print ステートメントだけが IDLE での速度低下の原因であるはずはありません。
誰かこれがなぜなのか説明してくれませんか?
答え1
はい、print ステートメントは実際にアイドル内の速度低下の主な原因です。stdout および stderr ストリームは IDLE によってキャプチャされ、テキストを適切にレンダリングするために一連の Tk コマンドが実行されます。stdout への出力を削除すると、速度が再び向上するはずです。
を参照してくださいアイドルライブラリ、アイドルライブラリ.OutputWindow、 そしてアイドルライブラリ.エディタウィンドウウサギの穴の範囲(の一部)のモジュール...
私は、ログ記録モジュールを使用して進行状況を記録します。その後、IDLE で実行しているときにログ レベルを高く設定して、その状態で出力を回避するか、stdout 以外の場所にログを記録することができます。
私は本当にお勧めしませんが、次のようなものがおそらく機能しますほとんどIDLE で実行しているときに動作を異なる方法で構成できるようにしたい場合は、そうしてください。ただし、実際にはそうすべきではありません :-)
import sys
running_under_idle = 'idlelib' in sys.modules