Отображение справки в формате HTML

otobrazhenie spravki v formate html Почтовый клиент PyMailGUI Python

Справка теперь может отображаться как простой текст в окне графического интерфейса, в формате HTML в веб-броузере или и там и там одновременно. Выбор формы отображения справки регулируется пользовательскими настройками в модуле mailconfig . Представление в формате HTML является новым. Для его создания выполняется простое преобразование справочного текста с добавлением ссылок на разделы и внешние сайты, а для открытия справки в веб-броузере применяется модуль webbrowser, обсуждавшийся ранее в этой книге. Функция отображения справки в текстовом виде теперь является избыточной, но она была оставлена, потому что при отображении HTML-версии отсутствует возможность открыть окна с исходными текстами программы.

Уве ли че на час то та опро са очере ди обра ботчи ков в по то ках вы пол нения

Глобальная очередь обработчиков, используемая потоками выполнения для обновления графического интерфейса, теперь позволяет вызывать большее количество обработчиков — 100 вызовов в секунду против 10 в предыдущей версии. Это было достигнуто увеличением частоты проверки очереди (20 раз в секунду против 10) и увеличением числа обработчиков, вызываемых при каждой проверке (5 против 1). В зависимости от чередования операций помещения в очередь и извлечения из нее это повышает скорость загрузки объемных почтовых ящиков примерно во столько же раз (10), причем ценой незначительного увеличения нагрузки на процессор. При этом на моем ноутбуке с Windows 7 потребление ресурса процессора программой PyMailGUI по-прежнему оставалось на уровне 0% в Диспетчере Задач (Task Manager) при простое.

Я увеличил количество вызовов обработчиков, чтобы обеспечить поддержку почтового ящика, содержащего 4800 входящих сообщений (на самом деле их оказалось еще больше к тому моменту, когда я нашел время, чтобы сделать снимок с экрана для этой главы). Без этого на начальную загрузку заголовков из данного почтового ящика, то есть на вызов 4800 обработчиков, уходило 8 минут (4800 ^ 10 ^ 60), даже при том, что большинство отображаемых сообщений пропускалось немедленно из-за ограничений на количество загружаемых новых писем (смотрите следующий пункт). После повышения частоты опроса очереди начальная загрузка стала занимать всего 48 секунд — возможно, и не идеально, но не забывайте, что начальная загрузка заголовков выполняется всего один раз за сеанс, и данный прием позволяет сохранить баланс между нагрузкой на процессор и отзывчивостью интерфейса. Конечно, этот почтовый ящик не является типичным примером, но в любом случае множественная начальная загрузка выигрывает от повышения скорости.

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

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий