скорость скрипта python в командной строке по сравнению с запущенным в оболочке IDLE

скорость скрипта python в командной строке по сравнению с запущенным в оболочке IDLE

Я несколько раз замечал, что простой скрипт python (с некоторыми простыми алгебраическими вычислениями в цикле) работает значительно быстрее (до множителя 6) при запуске в командной строке оболочки по сравнению с запуском через оболочку IDLE. В скрипте не происходит ничего необычного. Я только вывожу переменную цикла, чтобы визуально отслеживать ход выполнения в цикле.

Неужели только это сообщение о печати не может быть причиной потери скорости в режиме IDLE? Или может?

Может ли кто-нибудь объяснить мне, почему это так?

решение1

Да, оператор print действительно является основной причиной замедления в режиме ожидания. Потоки stdout и stderr захватываются IDLE, и выполняется целый ряд команд Tk для соответствующего отображения текста. Удаление вывода в stdout должно снова ускорить процесс.

Смотритеidlelib.PyShell,idlelib.OutputWindow, иidlelib.EditorWindowмодули для (некоторой) протяженности кроличьей норы...

Я бы предложил использоватьВедение журналамодуль для записи хода выполнения; затем вы можете установить более высокий уровень ведения журнала при работе в режиме IDLE, чтобы избежать вывода в этом состоянии, или вести журнал в другом месте, а не в stdout.

хотя яДействительноне рекомендовал бы этого, вероятно, сработает что-то вроде следующегобольшинствовремени, если вы действительно хотите иметь возможность настроить поведение по-другому при работе в режиме IDLE. Хотя на самом деле вам не стоит этого делать :-)

import sys

running_under_idle = 'idlelib' in sys.modules

Связанный контент