Najprv sa poďme porozprávať o úskaliach, na ktoré som narazil, o problémoch v produkcii, plánujem spustenie python skriptu a monitorujem proces, čas spustenia python skriptu je oveľa dlhší než čas spustenia programu, ktorý počítam v python skripte. Čas na monitorovanie vykonávania python skriptov je 36 hodín, zatiaľ čo čas na samovykonanie v python skriptoch je približne 4 hodiny. Prvá vec, ktorá mi napadne po probléme, je, že je problém s Linuxom, a nenašiel som žiadne abnormality v rôznych logoch. Potom si spomeniem na py2neo, ktoré sa používa v pythone na asynchrónny zápis dát, čím blokuje vykonávanie procesu. Nakoniec sa objavil problém: spôsob, akým python skript používa time.clock() na počítanie času vykonávania CPU, nie času vykonávania programu. Ďalej porovnajme niekoľko štatistík Python času:
Metóda 1:
datetime.datetime.now() získa aktuálny dátum a po skončení spustenia programu je časová hodnota získaná touto metódou čas vykonania programu.
Metóda 2:
time.time() na získanie aktuálneho času od epochy (Za pár sekúnd)。 Ak ich poskytujú systémové hodiny, môže byť len zlomok sekundy. Takže toto miesto vracia typ s pohyblivou desatinnou čiarkou. Získavame tu aj čas vykonania programu.
Metóda 3:
time.clock() vráti čas CPU od spustenia alebo prvého volania programu. To má takú presnosť ako systémové nahrávanie. Návratnosť je tiež typu s pohyblivou desatinnou čiarkou. To, čo tu dostanete, je čas vykonávania CPU. Poznámka: Čas vykonávania programu = čas CPU + čas IO + čas hibernácie alebo čakanie
Takto testujem čas vykonávania funkcie metódou 2:
|