изменить и передать значение переменной в классе с помощью генераторов - PullRequest
0 голосов
/ 11 сентября 2018

Я строю имитационную модель, в которой есть класс, который содержит два процесса (генератора). Оба процесса используют одну общую переменную, называемую «val».

Будет несколько экземпляров процессов, которые будут выполняться друг за другом, например:

Запускается экземпляр 1 процесса 1, который вызывает экземпляр 1 процесса 2. Создается экземпляр 2 процесса 1, который вызывает экземпляр 2 процесса 2

Теперь идея состоит в том, что значение для переменной "val" должно передаваться через различные экземпляры, поэтому значение val будет иметь значение как "False", теперь он вызывает процесс 2, который превращает val в "True", теперь, если в следующий раз генерируется другой экземпляр процесса 1, тогда он должен получить значение val как «True», а не «False», которое является инициализированным значением.

Как мне этого добиться, я довольно новичок в Python & Simpy и поэтому, возможно, делаю фундаментальную ошибку с областью действия и экземпляром переменной & objects.

Вот пример кода:

import simpy
env = simpy.Environment()
class samp(object):
    def __init__(self,name):
        self.name = name
        self.val = False
    def process1(self,env,name):
        if self.val == True:
            print("Process 2 is using resource")
        yield env.timeout(2)
        env.process(self.process2(env,name))
    def process2(self,env,name):
        print('Process 2 triggered for',name)
        self.val == True
        yield env.timeout(5)
for i in range(2):
    samp_ins = samp("Abc")
    samp_name = 'Cust' + str(i)
    env.process(samp_ins.process1(env,samp_name))
env.run()

вот вывод, который я получаю прямо сейчас, хотя во второй итерации цикла я ожидал, что будет выведен оператор печати из первого процесса, а это не так:

('Process 2 triggered for', 'Cust0')
('Process 2 triggered for', 'Cust1')
...