Python: Почему IDLE так медленно?

IDLE – мой любимый редактор Python. Он предлагает очень приятную и интуитивно понятную оболочку Python, которая чрезвычайно полезна для модульного тестирования и отладки и аккуратного отладчика.

Однако код, выполняемый под IDLE, безумно медленный. Я безумно на 3 порядка медленнее:

удар

time echo "for i in range(10000): print 'x'," | python 

Принимает 0,052 секунды,

IDLE

 import datetime start=datetime.datetime.now() for i in range(10000): print 'x', end=datetime.datetime.now() print end-start 

принимает:

 >>> 0:01:44.853951 

Это примерно в 2000 раз медленнее.

Любые мысли или идеи, как улучшить это? Я предполагаю, что это имеет какое-то отношение к отладчику в фоновом режиме, но я не уверен.

Адам

2 Solutions collect form web for “Python: Почему IDLE так медленно?”

Проблема заключается в том, что текстовый вывод не является отладчиком.

Я просто попробовал это на своей Q6600 (3GHz разогнанной) системе, и мои цифры еще хуже. Но его легко увидеть, что они идут вниз, более выходной текст добавляется.

Я попытался запустить его с помощью

1000 итераций => 7,8 с 2000 итераций => 28,5 сек 3000 итераций => 70 с

В прошлом я делал некоторые низкоуровневые TK-материалы, и я знаю, что TkText Widget сохраняет текст в структуре BTree. Добавление текста персонажа – это один из худших способов сделать, но это похоже на то, что делает IDLE. Обычный способ – уловить больше данных и добавить больший фрагмент текста.

Удивительно, если вы печатаете «x \ n», вывод выполняется намного быстрее. 3000 итераций за 7 секунд и 10000 за 19 сек.

Таким образом, проблема, безусловно, связана с добавлением отдельных символов в существующие строки. Программист IDLE не знал, как работает TkText.

Поэтому советуем добавлять новые тексты в текст или выводить большие куски, а не только один символ «x».

Проблема заключается в виджетах Tkinter Text и его неэффективном управлении очень длинными строками, и вы его создаете. Вы заметите, что, хотя любая часть очень длинной строки видна, все прокрутки дьявольски медленны.

Python - лучший язык программирования в мире.