我正在用python寫一個倒計時時鐘,但它看起來像時間模塊只能下到第二個。有沒有辦法讓我準確確定何時完成了1秒?Python:如何將代碼的執行時間延長到1秒
似乎我的問題有點令人困惑,讓我澄清。我需要運行一些代碼,然後程序進入一個while循環,一旦代碼開始運行至少1000毫秒後退出
我正在用python寫一個倒計時時鐘,但它看起來像時間模塊只能下到第二個。有沒有辦法讓我準確確定何時完成了1秒?Python:如何將代碼的執行時間延長到1秒
似乎我的問題有點令人困惑,讓我澄清。我需要運行一些代碼,然後程序進入一個while循環,一旦代碼開始運行至少1000毫秒後退出
如果您知道要運行需要不到1秒的代碼,然後1 - elapsed time
會給你剩下的時間睡覺,不需要while
循環。
now = time.time()
foo()
time.sleep(1 - (time.time() - now))
算術會有一些開銷,但它在一秒之內,並且嚴格大於1秒,如您所請求的。我跑到下面的代碼:
import time
import random
def foo():
time.sleep(random.random())
now = time.time()
foo()
time.sleep(1 - (time.time() - now))
print "Time elapsed: {}".format(time.time() - now)
輸出:
Time elapsed: 1.00379300117
可以運行了幾次,以驗證它給你想要的輸出,無論foo
需要多長時間。
除非花費時間超過1秒,否則睡眠時間將爲負值,這將導致IOError
。你需要檢查這種情況。
或者,如果你需要的,如果1秒傳給殺功能,檢查this question
謝謝!正是我需要的! – user3246167
默認情況下,time
模塊爲您提供時間10^-5秒
import time
time.time()
>>> 1480643510.89443
這裏是一個辦法,將工作,但林不知道哪個模塊你是有限的。
import time
def procedure:
time.sleep(2.5)
# measure wall time
t0 = time.time()
procedure()
print time.time() - t0, "seconds wall time"
2.50023603439秒壁時間
其中程序是您正在計時功能的引用。
你嘗試datetime模塊?具體檢查timedelta對象 – miraculixx
[Timer](https://docs.python.org/3/library/threading.html#timer-objects)對象。 –
由於我需要運行一些代碼,然後等待第二秒的剩餘時間過去,計時器並不會真正爲我所做的工作。我不想等一秒鐘,然後運行代碼,因爲那麼它將關閉 – user3246167