python3 打點計時

2021-10-10 00:20:45 字數 4049 閱讀 3645

使用方法: 

(1)記錄時間點:    打點()

(2)計算時間差值: 計時()

示例:

if __name__ == '__main__':

打點()

time.sleep(1)

打點("a2")

time.sleep(1)

打點("a3")

time.sleep(2)

打點("a4")

time.sleep(3)

打點()

print(f"\n預設情況取最後的兩點:\n"

f"")

print(f"\n下標的使用跟陣列擷取一樣:\n"

f"")

print(計時(0))

print(f"\n也可以通過打點時定義的名稱來擷取範圍:\n"

f"")

print()

print()

print(計時().秒數())

print(計時().視覺化時間())

print(計時().最近計算的視覺化時間字典())

工具類:

import time

# region 打點計時

# region 轉換秒數相關

_毫秒_秒數 = 0.001

_秒_秒數 = _毫秒_秒數 * 1000

_分鐘_秒數 = _秒_秒數 * 60

_小時_秒數 = _分鐘_秒數 * 60

_天_秒數 = _小時_秒數 * 24

def 拆解秒數(秒數, 各時間單位值字典={}):

if 秒數 > _天_秒數 + _小時_秒數:

除餘結果 = divmod(秒數, _天_秒數)

各時間單位值字典["天"] = int(除餘結果[0])

return "%d 天, %s" % (int(除餘結果[0]), 拆解秒數(除餘結果[1], 各時間單位值字典))

elif 秒數 > _小時_秒數 + _分鐘_秒數:

除餘結果 = divmod(秒數, _小時_秒數)

各時間單位值字典["小時"] = int(除餘結果[0])

return '%d 小時, %s' % (int(除餘結果[0]), 拆解秒數(除餘結果[1], 各時間單位值字典))

elif 秒數 > _分鐘_秒數 + _秒_秒數:

除餘結果 = divmod(秒數, _分鐘_秒數)

各時間單位值字典["分鐘"] = int(除餘結果[0])

return '%d 分鐘, %s' % (int(除餘結果[0]), 拆解秒數(除餘結果[1], 各時間單位值字典))

elif 秒數 > _秒_秒數 + _毫秒_秒數:

除餘結果 = divmod(秒數, _秒_秒數)

各時間單位值字典["秒"] = int(除餘結果[0])

return '%d 秒, %s' % (int(除餘結果[0]), 拆解秒數(除餘結果[1], 各時間單位值字典))

else:

除餘結果 = divmod(秒數, _毫秒_秒數)

各時間單位值字典["毫秒"] = int(除餘結果[0])

return "%d 毫秒" % int(除餘結果[0])

# endregion

class 打點計時類:

class 時間值儲存類:

def __init__(self, 時間值=0):

self.時間值 = 時間值

self.各時間單位值字典 = {}

@staticmethod

def 例項化():

return 打點計時類.時間值儲存類()

def 視覺化時間(self):

# 清空字典

self.各時間單位值字典["天"] = 0

self.各時間單位值字典["小時"] = 0

self.各時間單位值字典["分鐘"] = 0

self.各時間單位值字典["秒"] = 0

self.各時間單位值字典["毫秒"] = 0

return 拆解秒數(self.時間值, self.各時間單位值字典)

def 秒數(self):

return self.時間值

def 最近計算的視覺化時間字典(self):

return self.各時間單位值字典

def __str__(self):

return self.視覺化時間()

def __init__(self, 陣列型打點上限=150, 刪除區間=[5, -5]):

self.預設打點陣列 =

self.個性打點字典 = {}

self.時間值儲存例項 = 打點計時類.時間值儲存類.例項化()

self.陣列型打點上限 = 陣列型打點上限

self.刪除區間 = 刪除區間

@staticmethod

def 例項化(陣列型打點上限=150, 刪除區間=[5, -5]):

return 打點計時類(陣列型打點上限, 刪除區間)

def 打點(self, 計時點名稱=none):

計時點 = time.time()

if len(self.預設打點陣列) > self.陣列型打點上限:

self.預設打點陣列 = self.預設打點陣列[0:self.刪除區間[0]] + self.預設打點陣列[self.刪除區間[1]:]

if 計時點名稱:

計時點名稱 = str(計時點名稱)

self.個性打點字典[計時點名稱] = 計時點

def 計時(self, 起始點=none, 結束點=none):

def 無參_無參_處理():

所需計時點_陣列 = self.預設打點陣列[-2:]

時間差值 = 所需計時點_陣列[0] - 所需計時點_陣列[-1]

if 時間差值 < 0:

時間差值 = -時間差值

self.時間值儲存例項.時間值 = 時間差值

return self.時間值儲存例項

def 下標_下標_處理():

所需計時點_陣列 = self.預設打點陣列[起始點:結束點]

時間差值 = 所需計時點_陣列[0] - 所需計時點_陣列[-1]

if 時間差值 < 0:

時間差值 = -時間差值

self.時間值儲存例項.時間值 = 時間差值

return self.時間值儲存例項

def 下標_無參_處理():

所需計時點_陣列 = self.預設打點陣列[起始點:]

時間差值 = 所需計時點_陣列[0] - 所需計時點_陣列[-1]

if 時間差值 < 0:

時間差值 = -時間差值

self.時間值儲存例項.時間值 = 時間差值

return self.時間值儲存例項

def 名稱_名稱_處理():

時間差值 = self.個性打點字典[起始點] - self.個性打點字典[結束點]

if 時間差值 < 0:

時間差值 = -時間差值

self.時間值儲存例項.時間值 = 時間差值

return self.時間值儲存例項

def default():

raise exception("計時失敗,引數型別未支援")

switch =

try:

return switch.get(repr(type(起始點)) + repr(type(結束點)), default)()

except exception as e:

print("計時出錯")

print(e)

_靜態計時器 = 打點計時類.例項化()

def 打點(計時點名稱=none):

_靜態計時器.打點(計時點名稱)

def 計時(起始點=none, 結束點=none):

return _靜態計時器.計時(起始點, 結束點)

# endregion 打點計時

Python3如何使用tabulate列印資料

需要先安裝 tabulate 模組 pi azacmcinstall 以上是把一維的dict列印出來.再看看二維的,list of dict 注 此處project函式是funcy包中的乙個功能 output 漂亮 另外,之前也用過 prettytable 但是感覺沒有tabulate簡單上手 本文...

python3小知識點

a a 3 a 3,b c a.extend d 6 a 3,b c d 6 format 698.25 698.2 format 698.26 698.3 把型別物件當作函式一樣呼叫執行 class a def call 根據檔名自動匯入模組,和re模組是一樣的,模組中有什麼方法就可以使用m直接呼...

python3打包並傳遞引數

使用python寫指令碼,但指令碼裡的引數是變動的 可修改的,有想將檔案打包成exe,這時候可以看看本片博文 1.使用pyinstaller包進行打包 安裝 pip install pyinstaller 通過cmd傳遞引數主要通過 sys.ar 1 代表第乙個引數 sys.ar 2 代表第二個引數...