Как отлаживать медленные вызовы Windows COM

211
Stefano Masini

Я использую Python 2.7 + win32com для запуска некоторых скриптов, автоматизирующих Adobe InDesign через интерфейс COM. Операционная система - Windows 10, работающая на хосте VMWare ESXi.

У меня очень низкая производительность, иногда интерпретатор Python зависает на вызовах COM на несколько секунд. Я проверил это, реализовав поток монитора, который периодически проверяет трассировку стека основного потока, чтобы убедиться, что выполнение программы застряло.

Я успешно использовал один и тот же стек (Python 2.7 + win32com + Adobe InDesign) (т. Е. Время отклика COM, измеряемое в миллисекундах или не более чем десятые доли секунды, а не целые секунды) в различных других комбинациях версий Windows и сред виртуализации.

Я не могу точно определить, где находится узкое место. Я подозреваю:

  1. операционная система замедляет связь COM
  2. приложение InDesign замедляет связь COM
  3. среда виртуализации замедляет коммуникацию COM
  4. Это совсем не о COM. Что касается 1, я попытался отключить брандмауэр Windows, антивирус Защитника Windows, Cortana и настроил параметры экрана Windows для более быстрой работы. Нет заметных изменений.

Что касается 2, я понятия не имею, но я не понимаю, почему InDesign (последняя версия CC) намеренно замедляет обмен данными.

Что касается 3 и 4, я открыт для предложений.

Загрузка ЦП и памяти как виртуальной ОС, так и хост-системы все время кажется низкой.

Это звонит кому-нибудь? Любой намек на то, как выяснить, где находится узкое место, будет высоко оценен.

Я не COM и не эксперт по Windows. Я просто пытаюсь запустить некоторые сценарии, автоматизировать некоторые утомительные задачи.

0

0 ответов на вопрос