python/timer

class TimerMgr(object):
  def __init__(self, TotalTimers):
    self.totalTimers = TotalTimers
    self.idleTimers = ['timer'+str(y) for y in range(TotalTimers)]   
    print(self.idleTimers)
    a = self.idleTimers.pop()
    print(a)
    print(self.idleTimers)
    self.idleTimers.append(a)
    print(self.idleTimers)
    self.timers = {}

  def bindQ(self, Queue):
    self.q = Queue

  def showIdles(self):
    print(self.idleTimers)  

  def getIdleTimer(self):
    return self.idleTimers.pop()

  def startTimer(self, TimerLength, TimerData):
    timerID = self.getIdleTimer()
    print(timerID)
    startTick = int(time.time()+0.5)
    endTick = startTick + TimerLength
    self.timers[timerID] = {'timeLength':TimerLength, 'endTick':endTick, 'timerID':timerID, 'data':TimerData}
    return timerID

  def stopTimer(self, TimerID):
    del self.timers[TimerID]
    self.idleTimers.append(TimerID)
    

  def showTimers(self):
    print(self.timers)

  def run(self):
    for key in self.timers.keys() :
      #print(key, self.timers[key])
      value = self.timers[key]
      endtick = value['endTick']
      currtick = time.time()
      #print(endtick, currtick)
      if endtick < currtick :
        print('timer {} expired'.format(key))
        self.stopTimer(value['timerID']) 


timerMgr = TimerMgr(10)
timerId = timerMgr.startTimer(10, {'onu':'00122312312'})
timerMgr.showTimers()
#timerMgr.stopTimer(timerId)
#timerMgr.showTimers()

timerId = timerMgr.startTimer(20, {'onu':'00122312312'})
timerMgr.showTimers()
#timerMgr.stopTimer(timerId)
#timerMgr.showTimers()


def consumer(q):
  while True:
    try:
      item = q.get(timeout=0.2)
      print(item)
    except Exception as error:
      ticks = time.time()
      #print("current ticks is {}".format(ticks))
    timerMgr.run()


q = Queue()
p = Process(target=consumer,args=(q,))
p.start()

timerMgr.bindQ(q)

if __name__ == '__main__':
    while True:
      a = raw_input("")
      q.put(a)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值