Почему отладка в eclipse / pydev такая медленная для моей программы на python? - PullRequest
8 голосов
/ 01 августа 2011

У меня есть относительно простая (без классов) программа на Python 2.7. Первым делом программа читает базу данных sqlite в словарь. База данных большая, но не огромная, около 90 мегабайт на диске. Для считывания требуется около 20 секунд. После считывания в базе данных я инициализирую некоторые переменные, например,

localMax = 0
localMin = 0
firstTime = True

Когда я отлаживаю эту программу в Eclipse-3.7.0 / pydev - даже эти простые строки - каждый отдельный шаг в отладчике съедает 100% ядра и занимает от 5 до 10 секунд. Я вижу, что процесс Python идет до 100% процессора в течение 10 секунд. Один шаг ... подождите 10 секунд ... один шаг ... подождите 10 секунд ... Если я отлаживаю в командной строке, просто используя pdb, никаких проблем. Если я вообще не отлаживаю, программа работает с "нормальной" скоростью, ничего странного, как в Eclipse.

Я воспроизвел это на двухъядерном ПК с Win7 с 4G памятью, 8-ядерным Ubuntu с 8G памяти и даже на Mac Air. Как это для мультиплатформенной разработки! Я продолжал думать, что это будет работать где-то . У меня никогда не хватает памяти в любое время.

Почему на каждом шаге Eclipse процесс python переходит на 100% CPU и занимает 10 секунд?

Ответы [ 2 ]

7 голосов
/ 01 августа 2011

Вот достаточно хороший обходной путь, основанный на подсказке Микко Охтамаа.Я только что проверил следующее на своем Mac Air:

  • Если я просто закрою окно «Переменные» в графическом интерфейсе Eclipse, я смогу пройти по коду с нормальной скоростью.Это здорово, но у меня нет окна Variables.
  • Для любой переменной, которую я хочу увидеть, я могу навести курсор на переменную и увидеть значение.Я не пытался навести курсор на мой большой словарь, который здесь является виновником.
  • Я также могу щелкнуть правой кнопкой мыши по любой переменной и добавить «Watch», которое вызывает окно «Expressions».В этом случае переменная является просто вырожденным регистром (очень простым регистром) выражения '.

Итак, обходной путь для меня - закрыть окно Eclipse Variable и использовать окно Expressions для выборочного выбора.просмотреть переменные.Боль, но для отладки я делаю это лучше, чем pdb.

1 голос
/ 06 февраля 2013

Я просто прокомментировал эту строку:

np.set_printoptions(threshold = 'nan')

Кажется, затмение пытается не отставать от слишком большого количества информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...