Wie debuggen Sie langsame Windows COM-Aufrufe

272
Stefano Masini

Ich verwende Python 2.7 + win32com, um einige Skripts auszuführen, die Adobe InDesign über die COM-Schnittstelle automatisieren. Das Betriebssystem ist Windows 10 und läuft in einem VMWare ESXi-Host.

Ich erlebe eine sehr langsame Leistung, wobei der Python-Interpreter manchmal für Sekunden an den COM-Aufrufen hängen bleibt. Ich habe dies durch Implementieren eines Monitor-Threads überprüft, der regelmäßig die Ablaufverfolgung des Haupt-Thread-Stacks überprüft, um festzustellen, ob die Programmausführung blockiert ist.

Ich habe denselben Stack (Python 2.7 + win32com + Adobe InDesign) mit Erfolg verwendet (dh COM-Antwortzeiten, die in Millisekunden oder höchstens Zehntelsekunden, nicht ganzen Sekunden gemessen werden) in verschiedenen anderen Kombinationen von Windows-Versionen und Virtualisierungsumgebungen.

Ich kann nicht feststellen, wo der Engpass liegt. Ich vermute:

  1. Das Betriebssystem verlangsamt die COM-Kommunikation
  2. Die InDesign-Anwendung verlangsamt die COM-Kommunikation
  3. Die Virtualisierungsumgebung verlangsamt die COM-Kommunikation
  4. Es geht nicht um COM. Wie für 1 habe ich versucht, die Windows-Firewall, den Windows Defender Antivirus und Cortana zu deaktivieren, und die Windows-Anzeigeeinstellungen für eine schnellere Leistung konfiguriert. Keine spürbare Veränderung.

Was 2 betrifft, habe ich keine Ahnung, aber ich kann nicht verstehen, warum InDesign (die neueste CC-Version) die Kommunikation absichtlich verlangsamen sollte.

Für 3 und 4 bin ich offen für Vorschläge.

Die CPU- und Speicherauslastung sowohl des virtuellen Betriebssystems als auch des Hostsystems scheint die ganze Zeit niedrig zu sein.

Klingelt dies für jedermann? Jeder Hinweis, wie der Flaschenhals zu finden ist, wird sehr geschätzt.

Ich bin weder COM noch Windows-Experte. Ich versuche nur, etwas Skripting in Gang zu bringen, um einige langweilige Aufgaben zu automatisieren.

0

0 Antworten auf die Frage