扩展 Simpy 的 Store.put(item) 方法以等待一些延迟

问题描述

我正在定义 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 (将#修改为@)