我正在构建一个仿真模型,其中有一个包含两个进程(生成器)的类。这两个过程都使用一个称为“ val”的通用变量。
会有多个进程实例相互接连运行,例如:
进程1实例1运行,它调用进程2实例1。 生成了流程1实例2,该实例调用了流程2实例2
现在的想法是,变量“ val”的值应该通过各种实例进行传输,因此初始val的值将为“ False”,现在它将调用使val为“ True”的进程2,如果下次生成了流程1的另一个实例,那么它应该将val的值设为“ True”,而不是获得初始化值“ False”。
如何实现这一目标,我是Python和Simpy的新手,因此可能在变量和对象的范围和实例上犯了一个根本性的错误。
这是示例代码:
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')