我有一個GUI應用程序需要在後臺執行簡單的操作(更新一個wx python進度條,但這並不重要)。我看到有一個threading.timer類..但似乎沒有辦法讓它重複。所以,如果我使用定時器,我最終不得不做出的每一個執行一個新的線程...,如:在Python中執行計時器功能的正確方法
import threading
import time
def DoTheDew():
print "I did it"
t = threading.Timer(1, function=DoTheDew)
t.daemon = True
t.start()
if __name__ == '__main__':
t = threading.Timer(1, function=DoTheDew)
t.daemon = True
t.start()
time.sleep(10)
這似乎是我作出了一堆做1個無聊的事和死亡線程。 。爲什麼不把它寫成:
import threading
import time
def DoTheDew():
while True:
print "I did it"
time.sleep(1)
if __name__ == '__main__':
t = threading.Thread(target=DoTheDew)
t.daemon = True
t.start()
time.sleep(10)
我錯過了一些方法來讓計時器繼續做些什麼?這些選項中的任何一個看起來都很愚蠢......我正在尋找一個更類似於java.util.Timer的計時器,它可以安排線程每秒發生一次......如果Python中沒有辦法,我的上述哪些方法更好,爲什麼?
第二個變體有什麼問題?這是一個標準的方式來完成你的任務在Python – nkrkv 2010-05-25 16:36:42
wx.CallAfter,wx.CallLater和wx.Timer是你的朋友。 – FogleBird 2010-05-25 16:44:59
這比wxPython更多的是Python本身。你淡化了你想要做什麼(更新進度條)的意義,但你不應該這樣做。 – FogleBird 2010-05-25 16:46:22