Я хочу передать атрибут состояния (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.Я буду обрабатывать несколько датчиков с ним.Поэтому я вынужден использовать несколько процессов.
Спасибо!