Циклическая буферизация тем с метками времени
У меня есть много тем, которые я хочу сохранить в буфере, но отдельные темы не должны записываться более 10 секунд каждая. Для пары тем эта строка работает нормально, но если я хочу подписаться на все темы, она начинает отставать. Мне нужно использовать что-то более эффективное, чем переписывать новый список, мне нужно вытолкнуть все элементы старше 10 лет.
buffer[topic] = [ msg for msg in buffer[topic] if timestamp - msg[0] < rospy.Duration(10.0) ]
Каждая тема имеет временную метку, если эта временная метка больше 10 с, мы хотим удалить эти элементы. Надеюсь, вы, ребята, можете помочь.
1 ответ
Решение
Вы можете попробовать использовать deque
из библиотеки коллекций ( https://docs.python.org/2/library/collections.html) и вызовите popleft
всякий раз, когда сообщение слишком старое.