示例#1
0
 def __init__(self, startTime = None):
     """
     Sets up the event queue, which is a dictionary using keys
     of the form int(time.time).  The keys point to SortCacheLists,
     which store the events.
     """
     
     self.queuedEvents = {}
     
     if startTime is None: startTime = Timing.mostAccurateTime()
     self.lastTime = startTime
示例#2
0
 def getNextEvents(self, currentTime=None):
     """
     Returns the events which have yet to be executed and occur before
     currentTime.
     """
     if currentTime is None: currentTime = Timing.mostAccurateTime()
     
     events = []
     appendToEvents = events.append
     self._list.sort()
     for it in xrange(len(self._list)):
         if self._list[0].getTime() <= currentTime:
             appendToEvents(self._list.pop(0))
         else:
             break
             
     return events
示例#3
0
 def getNextEvents(self, currentTime=None):
     """
     Returns the events which have yet to be executed and occur before
     currentTime.
     """
     if currentTime is None: currentTime = Timing.mostAccurateTime()
     
     events = []
     appendToEventList = events.append
     for it in xrange(len(self.queue)):
         event = self.queue.pop()
         if currentTime >= event.getTime():
             appendToEventList(event)
         else:
             # add event back to queue
             self.queue.append(event)
             break
     return events
示例#4
0
 def getNextEvents(self, currentTime=None):
     """
     Returns the events which have yet to be executed and occur before
     currentTime.
     """
     if currentTime is None: currentTime = Timing.mostAccurateTime()
     
     eventList = []
     appendToEventList = eventList.append
     currentTimeIndex = int(currentTime)
     
     for timeIndex in xrange( int(self.lastTime), currentTimeIndex ):
         
         timeIndexEvents = self.queuedEvents.get(timeIndex,None)
         
         if timeIndexEvents is not None:
             
             timeIndexEvents.sort()
             
             for event in timeIndexEvents:
                 appendToEventList(event)
             
             del self.queuedEvents[timeIndex]
         
     currentEvents = self.queuedEvents.get(currentTimeIndex,None)
     
     if currentEvents is not None:
         
         currentEvents.sort()
         
         for i in xrange(len(currentEvents)):
             
             event = currentEvents[0]
             if event.time <= currentTime:
                 appendToEventList(currentEvents.pop(0))
             else:
                 break
     
     self.lastTime = currentTime
     
     return eventList
示例#5
0
 def getNextEvents(self, currentTime=None):
     """
     Returns the events which have yet to be executed and occur before
     currentTime.
     """
     if currentTime is None: currentTime = Timing.mostAccurateTime()
     
     events = []
     
     queueEmptyFunc = self._queue.empty
     
     while not queueEmptyFunc():
     
         event = self._queue.get_nowait()
         if event.getTime() <= currentTime:
             events.append(event)
         else:
             self._queue.put_nowait(event)
             break
             
     return events
示例#6
0
 def __init__(self, data=None, delay=0):
     
     self.time = Timing.mostAccurateTime()+delay
     self.data = data
示例#7
0
 def addEvent(self,event):
     timeDelay = event.getTime()-Timing.mostAccurateTime()
     
     if timeDelay >= 0:
         Timer(timeDelay,self.executedEvents.append,[event]).start()
示例#8
0
    def __init__(self, data=None, delay=0):
        
        self.time = Timing.mostAccurateTime()+delay
        self.data = data
    
    def getTime(self):
        
        return self.time
        
    def __cmp__(self, other):

        return self.time > other.time

if __name__ == '__main__':
    
    import random
    
    startTime = currentTime = Timing.mostAccurateTime()
    delay = 5.250
    eq=EventQueue2a(startTime)
    numEv=500
    # add 500 events to the queue to execute after "delay" seconds.
    for t in xrange(numEv):   
        eq.addEvent(TestEvent(delay=delay))
    
    numEvents = 0
    while numEvents < numEv:
        currentTime = Timing.mostAccurateTime()
        numEvents+=len(eq.getNextEvents(currentTime))
    print 'Elapsed time: %.6f'%(currentTime-startTime)