Передача атрибутов состояния между двумя процессами Python - PullRequest
0 голосов
/ 20 декабря 2018

Я хочу передать атрибут состояния (bool) во второй процесс.Основной процесс инициализирует этот процесс и передает соответствующий атрибут в конструкторе.В зависимости от этого атрибута второй процесс должен печатать разные значения.Класс 'TestClass' находится в отдельном файле.

Это подпроцесс второго файла (назовем его subprocess.py), который не выводит желаемые результаты.

from multiprocessing import Process, Value    
import time
# this class is executed in a second process and reacts to changes in
# in the main process
class TestClass(Process):
    def __init__(self, value):
        Process.__init__(self)
        self.__current_state = value

    def run(self):
        while True:
            if bool(self.__current_state):
                print("Hello World")
            else:
                print("Not Hello World")
            time.sleep(0.5)

Это основной процесс, который выполняется

import time 
from SubProcess import TestClass
# main procedur        
value_to_pass = Value('i', False).value    

test_obj = TestClass(value_to_pass)
test_obj.start()

while True:
    if bool(value_to_pass):
        value_to_pass = Value('i', False).value
    else:
        value_to_pass = Value('i', True).value
    # wait some time
    time.sleep(0.4)

В конце я хотел бы иметь переменный вывод Not Hello World и Hello World , который успешно указывает на передачу аргумента состояния.

В данный момент он просто выводит печать в зависимости от моей инициализации value_to_pass .Очевидно, он никогда не меняет своего значения.

Использование атрибутов global не соответствует моим требованиям, поскольку речь идет о разных файлах.Кроме того, использование атрибутов объекта просто подходит, если я использую потоки.Позже я буду использовать RaspberryPi.Я буду обрабатывать несколько датчиков с ним.Поэтому я вынужден использовать несколько процессов.

Спасибо!

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