Я хочу передать атрибут состояния (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)
В конце я хотел бы иметь чередующийся вывод Не привет мир и Привет мир, который успешно указывал бы на передачу аргумента состояния.
На данный момент он просто выводит печать в зависимости от моей инициализации value_to_pass. Очевидно, что это никогда не меняет своей ценности.
Использование атрибутов Глобальный не соответствует моим требованиям, потому что речь идет о разных файлах. Кроме того, использование атрибутов объекта подходит, если я использую потоки. Позже я буду использовать RaspberryPi. С ним я справлюсь с несколькими датчиками. Следовательно, я вынужден использовать несколько процессов.
Спасибо!
Внутри потоков он отлично работает даже с атрибутами объекта. Более того, основной процесс и подпроцесс находятся в разных файлах.
Я предлагаю вам отредактировать свой пост, чтобы разделить блок кода в соответствии с вашим реальным сценарием, в котором вы используете 2 файла. Более того, похоже, вам нужно будет использовать сокеты. Взгляните на здесь. В этом другом ссылка на сайт у вас есть больше возможностей






Возможный дубликат Python создает общую переменную между потоками