问题描述
我想从 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)
过滤器一次只返回一个元素