У меня есть служба, которая отображает целое число (из сложного пакета массива) в постоянном цикле.Этот цикл будет постоянно печатать различные состояния, такие как:
1 (new assignment)
1
1
1
3 (success)
3
3
1 (new assignment)
1
1
1
1
4 (failure)
4
4
1 (new assignment)
1
1
3 (success)
В python я хочу напечатать сообщение один раз , когда изменяется целое число (например, в скобках), ядо сих пор не удалось найти подходящее решение.Основная проблема заключается в том, что функция обратного вызова (которая печатает эти целые числа для меня) вызывается каждую секунду или около того, что приводит к тому, что сообщения об обновлении печатаются при каждом выполнении одного из условий.
Кодследующим образом, класс rospy создает цикл, который будет продолжать вызывать обратный вызов:
def callback(data):
status = data.status_list[0].status
if status == 1:
print("new assignment")
if status == 3:
print("success")
if status == 4:
print("failure")
rospy.init_node('listener', anonymous=True)
rospy.Subscriber("move_base/status", GoalStatusArray, callback)
rospy.spin()