Ich habe ein Python-Skript, das eine USB-basierte Datenerfassung C# Dotnet ausführbare aufruft. Das Hauptpython-Skript macht viele andere Dinge, z.B. Es steuert einen Schrittmotor. Wir möchten das relative Timing von verschiedenen Operationen überprüfen, zu diesem Zweck erzeugt die dotnet exe ein Protokoll mit Zeitstempeln aus C# Stopwatch.GetTimestamp(), das, soweit ich weiß, die gleiche Anzahl ergibt wie Aufrufe von win32 API QueryPerformanceCounter().Python auf win32: Wie bekomme ich absolute Timing/CPU-Zyklus-Zählung
Jetzt möchte ich ähnliche Zahlen aus dem Python-Skript erhalten. time.clock() gibt solche Werte zurück, leider subtrahiert sie den zum Zeitpunkt des ersten Aufrufs erhaltenen Wert von time.clock(). Wie kann ich das umgehen? Ist es einfach, QueryPerformanceCounter() von einem vorhandenen Python-Modul aus aufzurufen oder muss ich meine eigene Python-Erweiterung in C schreiben?
ich vergaß zu erwähnen, hat der Python WMI-Modul von Tim Golden dies:. wmi.WMI() Win32_PerfRawData_PerfOS_System ab() [0] .Timestamp_PerfTime , aber es ist zu langsam, einig 48ms-Overhead. Ich brauche etwas mit < = 1 ms Overhead. time.clock() scheint schnell genug zu sein, wie auch C# Stopwatch.GetTimestamp().
TIA, Radim
Funktioniert gut, ich bin in der Lage, Anzeigen etwa 0,5 ms auseinander zu bekommen (vs 48ms mit WMI). Danke, Luc. –
Hier ist eine Erweiterung der oben genannten, mit micros(), millis(), delay() und delayMicroseconds() Funktionen für Python in Windows: http://StackOverflow.com/questions/38319606/how-to-get-millisecond -und-Mikrosekunden-Auflösung-Zeitstempel-in-Python. Danke @luc für die Syntax des Zugriffs auf QueryPerformanceCounter in Python! –
@luc, sollten Sie 'val = c_uint64()' anstelle von 'val = c_int64()' verwenden? –