2017-07-11 2 views
1

イメージファイルで作業しているうちに、文字列に読み込み、IDLE 3.6に印刷してみました。文字列の長さは約160Kバイトで、私はすでにマシン上のtxtファイルに保存しています。今長い文字列を印刷した後、Python IDLEの速度が遅くなる

...

が、私はそう間違っていたことがありません...それは、約1秒かかりましたので、私はそれがほぼ同じかかる印刷考え出し、私はthisをチェックし、最初の答えは、印刷自体ことを示唆しています問題がある。彼らのケースでは、フォーマットは非標準であったので、私のケースが同じかどうかはわかりません。第二に、プリントが問題であれば、IDLEはなぜの遅いと思われるのですか?の印刷が終わったのですか?

これは私がそれを実行する方法である:

with open(location_of_160KB_png_file, "rb") as imageFile: 
    f = imageFile.read() 
    b = bytearray(f) 
    b=''.join([str(bb) for bb in b]) 
    b[:10] # this prints easily (on IDLE I don't have to use _print_ function, I can just type the variable name) 
    b   # this, however... 
+0

この現象の最小限の例をPythonコードで提供できますか? –

+0

[python:IDLEがターミナルより遅いのはなぜですか?](https://stackoverflow.com/questions/12851313/python-why-idle-is-slower-than-terminal) – davedwards

+0

このスレッドはスレッドIを指しています上記の... – CIsForCookies

答えて

1

問題、あなたが与えたリンクへの回答で説明したように、Tkのテキストウィジェットは短い行を処理するために最適化されていることです。 IDLEのシェルに500000行以上の多分40文字をロードしました。それは2,000万の文字で、人が書いたファイルよりもずっと大きくなっています。意図した用途に適しています。

参照先のリンクでは、一度に1文字ずつ10000チャ゗ルラインが作成されます。 Tk Textは、1000年代のどこかで低迷しています。あなたは明らかに一度に160000文字を投げた。一度に10000で十分です。

PS:print文がない表現をエコーするのは、標準のPythonインタラクティブインタプリタの動作です。私はこれがおそらく前任者からコピーされたと確信しています。

+0

Thx !!しかし、私が本当に探しているのはなぜなのか...ラインが印刷された後にどうしたら、まだ反応が遅いのですか?私は多分それがRAMをいっぱいになると思ったが、それは基本的に何もない(16GBのマシン)である200KB未満です – CIsForCookies

+0

私は実際に凝縮された方法で答えました。あなたが指摘したように、最初の挿入は問題ではありません。問題は、すでにテキストウィジェットに挿入されている長い行と、カーソルを移動したり、さらにテキストを挿入したときに表示されるウィジェットの変更方法のコードとのやりとりです。この異常なケースでは、スクロールバーを追加してもしなくても、行の折り返しを無効にすると、応答性が向上すると思われます。 (私は実験を計画しています。) –

関連する問題