使用生成器更改和传递类中变量的值

时间:2018-09-11 05:56:35

标签: python class methods simpy

我正在构建一个仿真模型,其中有一个包含两个进程(生成器)的类。这两个过程都使用一个称为“ 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')

0 个答案:

没有答案