使用方法:
(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 代表第二個引數...