Я строю имитационную модель, в которой есть класс, который содержит два процесса (генератора). Оба процесса используют одну общую переменную, называемую «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')