Python3 time模塊使用,精確到秒以內的應用示例

import time
import datetime     # 測試用,方便

## 模擬程序執行,調用函數這個動作也要消耗時間
def run():
    當前時刻 = datetime.datetime.now()
    print("函數啓動時刻", 當前時刻)


## 最後的修正,精確到毫秒
def WAIT(延時):
    T = time.time()
    T_整數部分 = int(T)
    T_小數部分 = T - T_整數部分
    T_修正時間 = 1 - T_小數部分
    time.sleep(T_修正時間)              # 程序執行前2秒的第一秒,修正到下一秒起始0刻
    # 修正後時刻 = time.time()
    time.sleep(延時)                    # 程序執行前2秒的第二秒,修正提前留好程序和網絡的時間
    當前時刻 = datetime.datetime.now()  # 測試用,可以刪除
    print("程序開始時刻", 當前時刻)     # 模擬最終要運行部分,“程序耗時”指的就是這個
    #run()                              # 模擬最終要運行部分,如果使用函數,函數調用也要消耗一點時間


## 到達服務端的時間精準時間,精確到秒
年 = 2019
月 = 11
日 = 26
時 = 17
分 = 1
秒 = 0
目標時間 = (年, 月, 日, 時, 分, 秒, 0,0,0)
任務時間 = time.mktime(目標時間)
程序耗時 = 0.03                                                  # 預估程序運行到發送數據需要 30ms
網絡耗時 = 0.04                                                  # 預估數據發送到目標需要網絡 40ms
需要提前時間 = 程序耗時 + 網絡耗時                               # 預估需要提前的總時間量
print("要求抵達時間 %d-%d-%d %d:%d:%d" % (年,月,日,時,分,秒))
print("預估程序耗時(秒)", 程序耗時)
print("預估網絡耗時(秒)", 網絡耗時)
print("需要提前時間(秒)", 需要提前時間)
預定執行時間 = 任務時間 - 需要提前時間
時間類 = time.localtime(預定執行時間)
print("預定執行時間", time.strftime('%Y-%m-%d %H:%M:%S',時間類)+'.'+str(round(預定執行時間-int(預定執行時間), 6)).split('.')[-1])

當前時間 = time.time()
階段一延時_等待 = 任務時間 - 當前時間 - 2 - int(需要提前時間)    # 當前和任務執行的時間差,多預留2秒及預留程序網絡耗時,只要總和的整數部分時間 如 1.2取1 ;2.21取2
if 階段一延時_等待 > 0:
    階段二延時_運行 = 1 - (需要提前時間 - int(需要提前時間))     # 精確到秒以內,需要計算小數部分
    time.sleep(階段一延時_等待)
    WAIT(階段二延時_運行)
else:
    print("已經來不及了")

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章