python自己做个定时器_技术图文:如何利用 Python 做一个简单的定时器类?
原標題:技術圖文:如何利用 Python 做一個簡單的定時器類?
背景
今天在B站上看有關 Python 最火的一個教學視頻 -- “零基礎入門學習 Python”,這也是我們 Python基礎刻意練習活動 的推薦視頻教程。
python視頻
在學習魔法方法的時候,有一節視頻是制作一個簡單的定時器類,基本要求如下:
定制一個計時器的類。
start和stop方法代表啟動計時和停止計時。
假設計時器對象t1,print(t1)和直接調用t1均顯示結果。
當計時器未啟動或已經停止計時時,調用stop方法會給予溫馨的提示。
兩個計時器對象可以進行相加:t1+t2。
只能使用提供的有限資源完成。
技術分析
Python 的time模塊中,時間表現的格式主要有三種:
timestamp時間戳,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。
struct_time時間元組,共有九個元素組。
format time格式化時間,用格式化的結構使時間更具可讀性。包括自定義格式和固定格式。
獲取時間戳
time.time返回當前時間的時間戳(1970紀元后經過的浮點秒數)。
importtime
ticks = time.time
print( '當前時間戳為:', ticks) # 當前時間戳為: 1570793479.162907
獲取當前時間元組
time.localtime([sec])格式化時間戳為本地的時間。如果sec參數未輸入,則以當前時間為轉換標準。
importtime
localtime = time.localtime(time.time)
print( "本地時間為 :", localtime)
# 本地時間為 : time.struct_time(tm_year=2019, tm_mon=10, tm_mday=11, tm_hour=19, tm_min=35, tm_sec=31, tm_wday=4, tm_yday=284, tm_isdst=0)
tm_year:4位數年
tm_mon:月
tm_mday:日
tm_hour:小時
tm_min:分鐘
tm_sec:秒
tm_wday:一周的第幾日,0到6 (0是周一)
tm_yday:一年的第幾日
tm_isdst:夏令時,值有:1(夏令時)、0(不是夏令時)、-1(未知),默認 -1
獲取格式化的時間
time.asctime([tupletime])接受時間元組并返回一個可讀的形式。
importtime
t = time.localtime
print( "本地時間為 : %s "% time.asctime(t))
# 本地時間為 : Fri Oct 11 19:42:34 2019
格式化時間
time.strftime(format[,tupletime])接收以時間元組,并返回以可讀字符串表示的當地時間,格式由format決定。
time.strptime(str,format='%a %b %d %H:%M:%S %Y')根據format的格式把一個時間字符串解析為時間元組。
time.mktime(tupletime)接受時間元組并返回時間戳(1970紀元后經過的浮點秒數)。
importtime
print(time.strftime( "%Y-%m-%d %H:%M:%S", time.localtime))
# 2019-10-11 19:48:31
print(time.strftime( "%a %b %d %H:%M:%S %Y", time.localtime))
# Fri Oct 11 19:48:31 2019
a = "Fri Oct 11 19:48:31 2019"
print(time.mktime(time.strptime(a, "%a %b %d %H:%M:%S %Y")))
# 1570794511.0
%y 兩位數的年份表示(00-99)
%Y 四位數的年份表示(000-9999)
%m 月份(01-12)
%d 月內中的一天(0-31)
%H 24小時制小時數(0-23)
%I 12小時制小時數(01-12)
%M 分鐘數(00=59)
%S 秒(00-59)
%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地相應的日期表示和時間表示
%j 年內的一天(001-366)
%p 本地A.M.或P.M.的等價符
%U 一年中的星期數(00-53)星期天為星期的開始
%w 星期(0-6),星期天為星期的開始
%W 一年中的星期數(00-53)星期一為星期的開始
%x 本地相應的日期表示
%X 本地相應的時間表示
%Z 當前時區的名稱
%% %號本身
Time 模塊
time.gmtime([secs])接收時間戳(1970紀元后經過的浮點秒數)并返回格林威治天文時間下的時間元組。
time.ctime([secs])把一個時間戳(按秒計算的浮點數)轉化為time.asctime的形式,作用相當于asctime(localtime(secs)),未給參數相當于asctime。
time.sleep(secs)推遲調用線程的運行,secs指秒數。
代碼實現
importtime
classMytime(object):
def__init__(self):
self.__info = '未開始計時!'
self.__begin = None
self.__end = None
self.__jg = 0
def__str__(self):
returnself.__info
def__repr__(self):
returnself.__info
defstart(self):
print( '計時開始...')
self.__begin = time.localtime
defstop(self):
ifnotself.__begin:
print( '提示:請先調用start開始計時!')
return
self.__end = time.localtime
self.__jg = time.mktime(self.__end) - time.mktime(self.__begin)
self.__info = '共運行了%d秒'% self.__jg
print( '計時結束!')
returnself.__jg
def__add__(self, other):
return'共運行了%d秒'% (other.__jg + self.__jg)
t1 = Mytime
print(t1)
# 未開始計時!
t1.stop
# 提示:請先調用start開始計時!
t1.start
# 計時開始...
time.sleep( 5)
t1.stop
# 計時結束!
print(t1)
# 共運行了5秒
t2 = Mytime
t2.start
# 計時開始...
time.sleep( 7)
t2.stop
# 計時結束!
print(t2)
# 共運行了7秒
print(t1 + t2)
# 共運行了12秒
總結
這個題目讓我們熟悉了 Python 中time模塊的使用方法,以及類的定義和類中的一系列魔法方法,如__init__、__str__、__repr__、__add__等等,Python 的魔法方法很是神奇啊,把面向對象中的構造函數、析構函數、運算符的重載等全部包含了進去。需要好好體會才能把這塊的知識學好。今天就這樣吧!See You!
參考文獻
https://www.bilibili.com/video/av4050443
https://www.cnblogs.com/lichunl/p/9098024.html
相關圖文:
經過8年多的發展,LSGO軟件技術團隊在「地理信息系統」、「數據統計分析」、「計算機視覺」等領域積累了豐富的研發經驗,也建立了人才培養的完備體系,目前深耕的領域為「機器學習與量化金融」,歡迎對計算機技術感興趣的同學加入,與我們共同成長進步。
后臺回復「搜搜搜」,隨機獲取電子資源!返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的python自己做个定时器_技术图文:如何利用 Python 做一个简单的定时器类?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDtune检测硬盘方法步骤
- 下一篇: python服务器搭建 实战_实战讲解: