问题描述
我正在定义 Simpy 的 Store 对象的以下扩展:
import simpy
class NewStore(object):
def __init__(self,env,capacity):
self.env=env
self.store=simpy.Store(env,capacity)
self.env.process(self.run())
def run(self):
yield self.env.timeout(1)
def put(self,item):
yield self.store.put(item)
print("@{}: item {} added".format(self.env.Now,item))
yield self.env.timeout(10)
def get(self):
item = yield self.store.get()
yield self.env.timeout(5)
print("@{}: item {} removed".format(self.env.Now,item))
class Simulation(object):
def __init__(self,env):
self.env=env
self.store=NewStore(env,4)
self.env.process(self.run())
def run(self):
self.env.process(self.add())
yield self.env.process(self.remove())
def add(self):
for i in range(10):
yield self.env.process(self.store.put(i))
#I want to use self.store.put(i) and have the same effect
def remove(self):
for i in range(10):
pkt= yield self.env.process(self.store.get())
#I want to use self.store.get() and have the same effect
env=simpy.Environment()
sim=Simulation(env)
env.run(until=1000000)
在Simulation类的add()
过程中,我想直接用yield self.store.put(i)
代替yield self.env.process(self.put(i))
,效果一样。换句话说,我如何修改商店的 put()
方法,以便在成功将项目插入商店后,必须经过一段时间才能产生 yield self.store.put(i)
。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)