Visų pirma, pakalbėkime apie spąstus, su kuriais susidūriau, problemas, su kuriomis susidūriau gamyboje, planuoju python scenarijaus vykdymą ir stebiu procesą, python scenarijaus veikimo laikas yra daug ilgesnis nei programos vykdymo laikas, kurį skaičiuoju python scenarijuje. Python scenarijų vykdymo stebėjimo laikas yra 36 valandos, o python scenarijų savaiminio vykdymo laikas yra apie 4 valandas. Pirmas dalykas, kuris ateina į galvą po problemos, yra tai, kad yra problema su Linux, ir aš neradau jokių anomalijų įvairiuose žurnaluose. Tada galvoju apie py2neo, naudojamą python duomenims rašyti asinchroniškai, blokuojant proceso vykdymą. Galiausiai buvo rasta problema: kaip python scenarijus naudoja time.clock(), kad suskaičiuotų procesoriaus vykdymo laiką, o ne programos vykdymo laiką. Toliau palyginkime keletą Python laiko statistikos:
1 metodas:
datetime.datetime.now() gauna dabartinę datą, o pasibaigus programos vykdymui, šiuo metodu gauta laiko reikšmė yra programos vykdymo laikas.
2 metodas:
time.time(), kad gautumėte dabartinį laiką nuo epochos (Per kelias sekundes)。 Jei sistemos laikrodis juos pateikia, gali būti sekundžių dalis. Taigi ši vieta grąžina slankiojo kablelio tipą. Čia taip pat gaunamas programos vykdymo laikas.
3 metodas:
time.clock() grąžina procesoriaus laiką nuo programos paleidimo arba pirmojo iškvietimo. Tai yra toks pat tikslumas, kaip ir sistemos įrašymas. Grąža taip pat yra slankiojo kablelio tipo. Čia gausite procesoriaus vykdymo laiką. Pastaba: Programos vykdymo laikas = procesoriaus laikas + io laikas + užmigdymo arba laukimo laikas
Štai kaip aš patikrinu funkcijos vykdymo laiką naudodamas 2 metodą:
|