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

Конечно, только это утверждение печати не может быть причиной потери скорости в IDLE, или так?

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

1 ответ1

0

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

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

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

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

import sys

running_under_idle = 'idlelib' in sys.modules

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .