2012-06-06 75 views
0

我正在使用Twisted套接字,但是我聽說如果在使用套接字時使用time.sleep,則系統掛起並且套接字停止。有沒有什麼辦法沒有time.sleep倒計時?沒有睡眠的Python倒計時

謝謝。

+0

希望有用:http://twistedmatrix.com/documents/12.0.0/api/twisted.internet.task.LoopingCall.html – sarnold

回答

0

扭曲有幾個選項。你可以使用一個簡單的函數來檢查一個條件。

from twisted.internet import reactor 
expire = 10 
def tick(): 
    expire -= 1 
    if expire == 0: 
     reactor.stop() 
     return 
    reactor.callLater(1, tick) 

reactor.callLater(0, tick) 
reactor.run() 

另外也twisted.internet.task.LoopingCall http://twistedmatrix.com/documents/current/api/twisted.internet.task.LoopingCall.html

from twisted.internet.task import LoopingCall 

def tick(): 
    if expired = 0: 
     reactor.stop() 
     return 
    do_something() 

task = LoopingCall(tick) 
task.start() 
reactor.run() 

如果您使用的是扭曲的應用程序(twistd來)或一些其它的多業務,也有twisted.application.internet.TimerService http://twistedmatrix.com/documents/current/api/twisted.application.internet.TimerService.html

+0

在你的第一個例子中,反應堆不會完全停止嗎?這是需要的嗎?我所要求的只是最基本的倒數計時,如果參數有數字,如果達到了數字,那就做點什麼。這是它會做什麼?我不在正確的電腦上,所以我無法真正測試。 – Alec

+0

reactor.stop()僅僅是一個例子。它可以是任何函數。我在示例中使用了reactor.stop(),以在到達計數器時使執行停止。你可能會想要一些其他的功能;-) – jlujan