1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| # -*- coding: utf-8 -*-
from threading import _Timer
from Queue import Queue, Empty
from time import clock
class Every(_Timer):
def run(self):
self.finished.wait(self.interval)
while not self.finished.is_set():
self.function(*self.args, **self.kwargs)
self.finished.wait(self.interval)
def send(q, lst):
global last
try:
# renvoie un element de la queue et le supprime de la queue
frame = q.get_nowait()
now = clock()
lst.append( "%6f frame sent: %s" % (now-last, frame) )
last = now
# indique que la tache dans la queue a ete terminee
q.task_done()
except Empty:
# si la queue est vide
pass
# queue FIFO
q = Queue()
lst = []
e = Every(0.01, send, (q,lst))
last = clock()
e.start()
for i in range(10):
# place i dans la queue
q.put(i)
# bloque jusqu'a ce que tous les elements de la queue aient ete traites
q.join()
e.cancel()
for l in lst:
print l |