Быстрый и точный таймер повторения Python
Мне нужно отправлять повторяющиеся сообщения из списка быстро и точно. Один список должен отправлять сообщения каждые 100 мс с окном +/- 10 мс. Я попытался использовать приведенный ниже код, но проблема в том, что таймер ждет 100 мс, а затем необходимо выполнить все вычисления, чтобы таймер выпал из допустимого окна.
Простое уменьшение ожидания - грязный и ненадежный взлом. Существует блокировка вокруг цикла сообщений, если список редактируется во время цикла.
Мысли о том, как заставить Python отправлять сообщения последовательно около 100 мс? Спасибо
from threading import Timer
from threading import Lock
class RepeatingTimer(object):
def __init__(self,interval, function, *args, **kwargs):
super(RepeatingTimer, self).__init__()
self.args = args
self.kwargs = kwargs
self.function = function
self.interval = interval
self.start()
def start(self):
self.callback()
def stop(self):
self.interval = False
def callback(self):
if self.interval:
self.function(*self.args, **self.kwargs)
Timer(self.interval, self.callback, ).start()
def loop(messageList):
listLock.acquire()
for m in messageList:
writeFunction(m)
listLock.release()
MESSAGE_LIST = [] #Imagine this is populated with the messages
listLock = Lock()
rt = RepeatingTimer(0.1,loop,MESSAGE_LIST)
#Do other stuff after this
Я понимаю, что функция writeFunction вызовет некоторую задержку, но не более 10 мс. По сути, мне нужно вызывать функцию каждые 100 мс для каждого сообщения. Список сообщений небольшой, обычно меньше, чем элементы.
Следующая задача - иметь эту работу каждые 10 мс, +/- 1 мс: P