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)
python/timer
于 2022-01-21 13:07:49 首次发布