【发布时间】:2022-07-17 19:53:17
【问题描述】:
此代码有效....
class FA(object):
def __init__(self, env):
self.env = env
self.resource1 = simpy.Resource(env, 10)
self.resource2 = simpy.Resource(env, 20)
def do_process1(self, tray):
yield self.env.timeout(50)
def do_process2(self, tray):
yield self.env.timeout(100)
def do_FA(env, fa, tray):
with fa.resource1.request() as request:
yield request
yield env.process(fa.do_process1(tray))
with fa.resource2.request() as request:
yield request
yield env.process(fa.do_process2(tray))
def run_FA(env):
fa = FA(env)
tray = 0
while True:
tray += 1
env.process(do_FA(env, fa, tray))
time_between_trays = 12
yield env.timeout(time_between_trays)
env = simpy.Environment()
env.process(run_FA(env))
env.run(until=20000)
等等……
有没有办法缩短函数do_FA?由于我有数十个资源和进程,我想创建一个进程和关联资源的列表并遍历它们?
【问题讨论】:
-
简短的回答是肯定的,您可以将函数分配给变量或列表,只需将 () 放在函数末尾。分配给 var 后,您可以使用该 var 作为函数。您可以使用元组将函数与资源配对并将元组放入列表中。我现在有点忙,但会写一个演示。但是,构建列表会像编写原始函数一样麻烦
-
万一有人有同样的问题,我可以使用 getattr 和 setattr 实现我想要的。
-
您可以添加您的解决方案作为答案吗?