《python使用with語句:記錄時間&檢查路徑》通過這個來理解with語句是如何進行上下文管理的,我們經常使用with語句開啟檔案,這樣可以避免忘記file.close()的情況,但是理解了with語句的呼叫邏輯後,可以發現利用with可以方便做很多其他的事情,比如記錄時間和檢查建立路徑等常用方法就可以使用with語句來實現了。
key words:python、with、__enter__、__exit__
beijing, 2020
agile pioneer
# coding:utf-8
# @time : 23/08/2018 16:49
# @author : surui
import time
class
timer
(object):
def__init__
(self, verbose=
false):
self.verbose = verbose
def__enter__
(self)
: self.start = time.time(
)return self
def__exit__
(self,
*args)
: self.end = time.time(
) self.secs = self.end - self.start
self.msecs = self.secs *
1000
# milliseconds
if self.verbose:
print
('elapsed time: %4.2f ms'
% self.msecs)
@property
deftime_used
(self)
:return
round
(self.msecs,4)
if __name__ ==
"__main__"
:with timer(
true
)as t:
time.sleep(1)
print
(t.time_used)
import os
class
checkdir***ist
:"""
check [dir1, dir2 ...] is exist or not, if not then create them.
"""def__init__
(self, dir_path_list)
: self.dir_path_list = dir_path_list
self.dir***istflag =
[false
]* self.num
def__enter__
(self,
*args)
:for i in
range
(self.num)
:if os.path.exists(self.dir_path_list[i]):
self.dir***istflag[i]
=true
return self
def__exit__
(self,
*args)
:for i in
range
(self.num):if
not self.dir***istflag[i]
: os.makedirs(self.dir_path_list[i]
) @property
defnum
(self)
:return
len(self.dir_path_list)
def__call__
(self,
*args,
**kwargs)
:for i in
range
(self.num):if
not self.dir***istflag[i]
:print
("<%s> is creating ..."
% self.dir_path_list[i]
)else
:print
("<%s> is alreay exists."
% self.dir_path_list[i]
)if __name__ ==
"__main__"
:with checkdir***ist(
["./***"
,"./***1"
,"./***2"])
as check: check(
)
使用 EXPLAIN 關鍵字 檢查SQL語句效率
explain詳細說明 通過explain可以知道mysql是如何處理語句,分析出查詢或是表結構的效能瓶頸。通過expalin可以得到 1.表的讀取順序 2.表的讀取操作的操作型別 3.哪些索引可以使用 4.哪些索引被實際使用 5.表之間的引用 6.每張表有多少行被優化器查詢 通過explain s...
mysql常用sql語句執行時間記錄 sql優化
資料量 3200000條 1.1 數量查詢select count 1 from users 耗時 12.997sselect count from users 耗時 12.449sselect count id from users id是主鍵 耗時 12.414sselect count pas...
SQL語句使用時間和日期的函式
getdate 獲取系統當前時間 dateadd datepart,number,date 計算在乙個時間的基礎上增加乙個時間後的新時間值,比如 dateadd yy,30,getdate datediff datepart,startdate,enddate 計算兩個時間的差值,比如 datedi...