Python執(zhí)行時間的計(jì)算方法小結(jié)
首先說一下我遇到的坑,生產(chǎn)上遇到的問題,我調(diào)度Python腳本執(zhí)行并監(jiān)控這個進(jìn)程,python腳本運(yùn)行時間遠(yuǎn)遠(yuǎn)大于python腳本中自己統(tǒng)計(jì)的程序執(zhí)行時間。
監(jiān)控python腳本執(zhí)行的時間是36個小時,而python腳本中統(tǒng)計(jì)自己執(zhí)行的時間是4個小時左右。
問題暴漏之后首先想到的是Linux出了問題,查找各種日志未發(fā)現(xiàn)有何異常。
然后是想到python中用到的py2neo的寫數(shù)據(jù)異步,阻塞進(jìn)程執(zhí)行。
最后,終于找到問題的所在:python腳本使用統(tǒng)計(jì)時間的方式是time.clock(),而這種方式統(tǒng)計(jì)的是CPU的執(zhí)行時間,不是程序的執(zhí)行時間。
接下來,就幾種python的統(tǒng)計(jì)時間方式對比一下:
方法1:
import datetime starttime = datetime.datetime.now() #long running #do something other endtime = datetime.datetime.now() print (endtime - starttime).seconds
datetime.datetime.now()獲取的是當(dāng)前日期,在程序執(zhí)行結(jié)束之后,這個方式獲得的時間值為程序執(zhí)行的時間。
方法2:
start = time.time() #long running #do something other end = time.time() print end-start
time.time()獲取自紀(jì)元以來的當(dāng)前時間(以秒為單位)。如果系統(tǒng)時鐘提供它們,則可能存在秒的分?jǐn)?shù)。所以這個地方返回的是一個浮點(diǎn)型類型。這里獲取的也是程序的執(zhí)行時間。
方法3:
start = time.clock() #long running #do something other end = time.clock() print end-start
time.clock()返回程序開始或第一次被調(diào)用clock()以來的CPU時間。 這具有與系統(tǒng)記錄一樣多的精度。返回的也是一個浮點(diǎn)類型。這里獲得的是CPU的執(zhí)行時間。
注:程序執(zhí)行時間=cpu時間 + io時間 + 休眠或者等待時間
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
python實(shí)現(xiàn)在遍歷列表時,直接對dict元素增加字段的方法
今天小編就為大家分享一篇python實(shí)現(xiàn)在遍歷列表時,直接對dict元素增加字段的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python的mysql數(shù)據(jù)庫的更新如何實(shí)現(xiàn)
這篇文章主要介紹了Python的mysql數(shù)據(jù)庫的更新如何實(shí)現(xiàn)的相關(guān)資料,這里提供實(shí)例代碼,幫助大家理解應(yīng)用這部分知識,需要的朋友可以參考下2017-07-07
Python標(biāo)準(zhǔn)庫之collections包的使用教程
這篇文章主要給大家介紹了Python標(biāo)準(zhǔn)庫之collections包的使用教程,詳細(xì)介紹了collections中多個集合類的使用方法,相信對大家具有一定的參考價值,需要的朋友們下面隨小編一起來學(xué)習(xí)學(xué)習(xí)吧。2017-04-04
Python調(diào)用.net動態(tài)庫實(shí)現(xiàn)過程解析
這篇文章主要介紹了Python調(diào)用.net動態(tài)庫實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
Python+PyQT5的子線程更新UI界面的實(shí)例
今天小編就為大家分享一篇Python+PyQT5的子線程更新UI界面的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
詳解如何使用Pandas刪除DataFrame中的非數(shù)字類型數(shù)據(jù)
在數(shù)據(jù)處理和分析過程中,經(jīng)常會遇到需要清洗數(shù)據(jù)的情況,本文將詳細(xì)介紹如何使用Pandas刪除DataFrame中的非數(shù)字類型數(shù)據(jù),感興趣的小伙伴可以了解下2024-03-03

