在Twisted中运行每个tick的函数

时间:2010-07-15 23:52:27

标签: python twisted timing

我正在使用扭曲的框架,我需要跟踪自事件开始以来已经过了多少时间,并在经过一定数量后执行操作。

在我看来,最好的方法是检查反应堆每个滴答的时间戳。如果这是最好的方式,我该怎么办?如果不是,那有什么更好的方法呢?

2 个答案:

答案 0 :(得分:2)

您想使用callLater

这是一个完整的,可运行的示例,可以满足您的要求,“在事件开始后经过一定时间(或更长时间)时执行操作”。

from twisted.internet import reactor
certainAmount = 0.73 # this is in seconds
def startedEvent():
    print 'started event'
    reactor.callLater(certainAmount, performAnAction)

def performAnAction():
    print 'performed an action'
    reactor.stop()
startedEvent()
reactor.run()

(我认为在反应堆中确实没有任何“嘀嗒”的东西,至少在某种意义上,不是我猜你的意思。)

答案 1 :(得分:1)

我正在寻找的功能似乎在这里描述: Running a function periodically in twisted protocol

这是我的代码:

def check_time(self):
        for game in self.games:
            if self.games[game]['state'] == 'GAME': 
                game_start_time = self.games[game]['starttime']
                if game_start_time is None:
                    continue
                elif game_start_time + 300 > time.time():
                    #300 seconds = 5 minutes.
                    continue
                else:
                    self.end_game(game)
def __init__(self):
    self.timecheck = task.LoopingCall(self.check_time)
    self.timecheck.start(1)