переменная общего доступа python multiproc - PullRequest
0 голосов
/ 25 февраля 2019

Я использую multiproc из pyepics, и мне нужно разделить переменную между параллельно запущенными процессами.Я пытаюсь упростить цель: допустим, у меня есть лампы (lamp_ID = 0,1,2,3), которые можно включать / выключать с помощью функции switch_on_light (id) .Кроме того, у меня есть главный выключатель для этих 4 ламп.Главный выключатель должен быть включен после включения отдельных ламп с помощью переменной процесса ( main_switch: состояние ), т. Е. Порядок:

  1. Включение отдельных лампвыполнив функцию switch_on_light (lamp_ID) in параллельный
  2. Включить главный выключатель, установив main_switch: состояние в on
  3. Выключить главный выключатель
  4. Выключить лампы (та же процедура, что и в шаге 1, просто выключить вместо включить )

Очень важно, чтобы отдельные лампы включались до главного выключателя И чтобы отдельные лампы выключались до выключения главного выключателя.

Моя проблема в том, что я не знаю, как сказать главному выключателю, что все четыре индикатора включены / выключены.Может быть, можно использовать общие переменные, которые дают обратную связь?Если все четыре общие переменные имеют значение True, то разрешается включение главного прерывателя?

Есть два файла python: lamp_operations.py и my_task.py ,Файл my_task.py содержит:

from lamp_operations import switch_on_light(id)

for id in [0, 1, 2, 3]:
    processes.append(CAProcess(target=switch_on_light, args=(id)))
for p in processes
    p.start()
for p in processes:
    p.join()

# missing: implementation of main_breaker and feedback from the function switch_on_light(id)

Есть идеи, как это реализовать?(Отдельные источники света управляются не переменной процесса, а функцией, т. Е. Я не могу запрашивать состояние ламп).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...