Циклическая буферизация тем с метками времени

У меня есть много тем, которые я хочу сохранить в буфере, но отдельные темы не должны записываться более 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 всякий раз, когда сообщение слишком старое.

Другие вопросы по тегам