我想在 Simpy Python 中从 FilterStore 获取许多项目

问题描述

我想从 FilterStore 获取很多项目。

factory.stock_part.items

FilterStore 是列表类型

[{'order_id': 534066215,'id': 0},{'order_id': 534066215,'id': 1},'id': 2},'id': 3},'id': 4},'id': 5},'id': 6},'id': 7},'id': 8}]

我想使用: factory.stock_part.get()

获得五件物品

factory.stock_part.get(5)

不起作用。

我该如何解决这个问题?完整代码如下:

import simpy


class Factory():
    def __init__(self,env):
        self.stock_part = simpy.FilterStore(env,capacity = 100000)
        


def stock_out(env,factory):
    while True:
        yield env.timeout(10)

        #in here I hope the inventory reduce 3,but one of the following 3 lines is not work
        factory.stock_part.get(5)
        factory.stock_part.get()[0:3]
        factory.stock_part.get(factory.stock_part.items[0:3])
        
        
            
            
    
env = simpy.Environment()

factory = Factory(env)

#create inventory list
factory.stock_part.put({'id':1})
factory.stock_part.put({'id':2})
factory.stock_part.put({'id':3})
factory.stock_part.put({'id':4})
factory.stock_part.put({'id':5})


on_process = env.process(stock_out(env,factory))

print('start')
env.run(until = 300)
print('end')

解决方法

你的 eval 函数在哪里?

如果您使用的是 filterStore,那么不需要传入一个函数来评估每个资源并在找到匹配项时返回 True?

类似的东西

part = yield factory.stock_part.get(lambda part: part['id'] == 5)

过滤器一次只返回一个元素