3.10.6 Параллельные задачи
Иногда мы хотим, чтобы робот работал над двумя или более задачами одновременно. Библиотека pi_trees включает в себя тип параллельных задач для обработки этих ситуаций. Существует два вида параллельных задач. Тип ParallelAll возвращает «УСПЕХ», если все одновременно выполняемые задачи завершаются успешно. Тип ParallelOne возвращает «УСПЕХ» сразу же после успешного выполнения любой из задач.
Пример сценария называется parallel_tree.py, в каталоге rbx2_tasks/nodes показан тип задачи ParallelAll. В этом сценарии первая задача печатает данное сообщение по одному слову за раз. Второе задание считает до 10. Попробуйте вот этот скрипт:
Вы должны увидеть следующие выходные данные:
Структура дерева поведения
--> ПЕЧАТАТЬ И СЧИТАТЬ
--> НАПЕЧАТАТЬ_СООБЩЕНИЕ
--> СЧИТАТЬ ДО 10
Take
1 me 2
to 3
your 4
leader!
5
6
7
8
9
10
Обратите внимание, что и задача сообщения, и задача подсчета выполняются до завершения работы скрипта, но выходные данные чередуются между этими двумя задачами, так как они выполняются параллельно.
Давайте взглянем на основную часть кода:
Построение дерева поведения, показанного выше, должно быть достаточно понятным из-за встроенных комментариев. Обратите внимание, что задачи PrintMessage() и Count() определены позже в сценарии и довольно просты, поэтому мы не будем отображать их здесь.
Если вы измените значение параметра сценария parallel_tree.py так, чтобы задача ParallelAll в строке 19 была заменена задачей ParallelOne, выходные данные должны выглядеть следующим образом:
Структура дерева поведения
--> ПЕЧАТАТЬ И СЧИТАТЬ
--> НАПЕЧАТАТЬ_СООБЩЕНИЕ
--> СЧИТАТЬ ДО 10
Отведите
1 меня 2
к 3
вашему 4
руководителю!
Теперь сценарий завершится, как только одна из задач завершится. В этом случае задача «НАПЕЧАТАТЬ_СООБЩЕНИЕ» завершается до выполнения задачи «СЧИТАТЬ_ДО_10», поэтому мы не видим чисел 5-10.
Last updated
Was this helpful?