Først og fremmest, lad os tale om de faldgruber, jeg stødte på, de problemer jeg stødte på i produktionen, jeg planlægger udførelsen af python-scriptet og overvåger processen, python-scriptets kørselstid er langt længere end den programeksekveringstid, jeg tæller i python-scriptet. Tiden til at overvåge udførelsen af python-scripts er 36 timer, mens selvudførelsestiden i python-scripts er omkring 4 timer. Det første, jeg kommer i tanke om efter problemet, er, at der er et problem med Linux, og jeg fandt ingen unormale fejl i forskellige logs. Så tænker jeg på py2neo, der bruges i python til at skrive data asynkront og blokere udførelsen af processen. Endelig blev problemet fundet: måden python-scriptet bruger time.clock() til at tælle CPU'ens eksekveringstid, ikke programmets eksekveringstid. Lad os dernæst sammenligne flere Python-tidsstatistikker:
Metode 1:
datetime.datetime.now() får den aktuelle dato, og efter programudførelsen er afsluttet, er tidsværdien, som denne metode opnår, tidspunktet for programeksekveringen.
Metode 2:
time.time() for at få den nuværende tid siden epoken (På få sekunder)。 Hvis systemuret leverer dem, kan der være en brøkdel af sekunder. Så dette sted returnerer en flydende komma-type. Det, der opnås her, er også programmets eksekveringstid.
Metode 3:
time.clock() returnerer CPU-tiden siden programmet startede eller først blev kaldt. Dette har lige så meget præcision som systemoptagelse. Returen er også af flydende kommatal-typen. Det, du får her, er CPU'ens eksekveringstid. Bemærk: Programeksekveringstid = CPU-tid + io-tid + dvale- eller ventetid
Her er, hvordan jeg tester udførelsestiden for funktionen ved hjælp af metode 2:
|