Передача атрибутов состояния между двумя процессами Python

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

Спасибо!

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

Hemerson Tacon 20.12.2018 14:50

Внутри потоков он отлично работает даже с атрибутами объекта. Более того, основной процесс и подпроцесс находятся в разных файлах.

max_ger 20.12.2018 14:56

Я предлагаю вам отредактировать свой пост, чтобы разделить блок кода в соответствии с вашим реальным сценарием, в котором вы используете 2 файла. Более того, похоже, вам нужно будет использовать сокеты. Взгляните на здесь. В этом другом ссылка на сайт у вас есть больше возможностей

Hemerson Tacon 20.12.2018 15:11
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
48
0

Другие вопросы по теме