Python 将非阻塞计时器转换为多个非阻塞计时器

Python 将非阻塞计时器转换为多个非阻塞计时器,python,timer,nonblocking,Python,Timer,Nonblocking,我有一个非阻塞计时器: import time class Timer: def __init__(self): self.status = 0 def update(self, data, tv): self.target = time.time() + data self.status = 1 def set_status(self, state): self.status = state

我有一个非阻塞计时器:

import time
class Timer:
        def __init__(self):
        self.status = 0
    def update(self, data, tv):
        self.target = time.time() + data
        self.status = 1
    def set_status(self, state):
        self.status = state
    def get_status(self, tv):
        return self.status
    def get_left(self, tv):
        return int(self.target-time.time())
当我在主循环中需要计时器时,它非常有效,例如:

t = Timer()
while 1:
    #If timer is not active.
    if t.get_status() == 0:
        # Do some checks.
        # Start timer with 60 seconds.
        t.update(60)
    #If timer is active.
    if t.get_status() == 1:
         print "%s seconds left." % str(t.get_left())
         if t.get_left() <= 0:
             t.set_status(0)
             # Timer is done do some stuff.
time.sleep(1)
t=Timer()
而1:
#如果定时器未激活。
如果t.get_status()==0:
#做一些检查。
#用60秒启动计时器。
t、 更新(60)
#如果计时器处于活动状态。
如果t.get_status()==1:
打印“%s剩余秒”。%str(t.get_left())

如果t.get_left()这是我自己的解决方案,如果有人有更好的主意,请告诉我

import time
class Timer:
    def __init__(self):
        self.status = {}
        self.target = {}
    def update(self, tv, data):
        self.target[tv] = time.time() + data
        self.status[tv] = 1
    def set_status(self, tv, state):
        self.status[tv] = state
    def get_status(self, tv):
        return self.status[tv]
    def get_left(self, tv):
        return int(self.target[tv]-time.time())

t = Timer()
t.set_status('A', 0)
t.set_status('B', 0)
while 1:
    # Timer A checks
    if t.get_status('A') == 0:
        print "Timer A checks."
        # Start timer with 60 seconds.
        t.update('A', 60)
    if t.get_status('A') == 1:
         print "A has %s seconds left." % str(t.get_left('A'))
         if t.get_left('A') <= 0:
             t.set_status('A', 0)
             print "Timer A done."
    # Timer B checks
    if t.get_status('B') == 0:
        print "Timer B checks."
        # Start timer with 30 seconds
        t.update('B', 30)
    if t.get_status('B') == 1:
         print "B has %s seconds left." % str(t.get_left('B'))
         if t.get_left('B') <= 0:
             t.set_status('B', 0)
             print "Timer B done."
    time.sleep(1)
导入时间
类计时器:
定义初始化(自):
self.status={}
self.target={}
def更新(自我、电视、数据):
self.target[tv]=time.time()+数据
自我状态[tv]=1
def设置_状态(自身、电视、状态):
self.status[tv]=状态
def get_状态(自身、电视):
返回自我状态[电视]
def get_left(自我、电视):
返回int(self.target[tv]-time.time())
t=计时器()
t、 设置_状态('A',0)
t、 设置_状态('B',0)
而1:
#计时器A检查
如果t.get_status('A')==0:
打印“计时器A检查”
#用60秒启动计时器。
t、 更新('A',60)
如果t.get_status('A')==1:
打印“A还有%s秒。”%str(t.get_left('A'))
如果t.get_左('A')