【问题标题】:I want go get many items from FilterStore in Simpy Python我想在 Simpy Python 中从 FilterStore 中获取许多项目
【发布时间】:2023-04-02 13:11:01
【问题描述】:

我想从 FilterStore 中获取许多项目。

factory.stock_part.items

FilterStore 是列表类型

[{'order_id': 534066215, 'id': 0}, {'order_id': 534066215, 'id': 1}, {'order_id': 534066215, 'id': 2}, {'order_id': 534066215, 'id': 3}, {'order_id': 534066215, 'id': 4}, {'order_id': 534066215, 'id': 5}, {'order_id': 534066215, 'id': 6}, {'order_id': 534066215, 'id': 7}, {'order_id': 534066215, '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')

【问题讨论】:

  • 错误信息是什么?如果是简单的列表,可以使用列表切片:factory.stock_part[:5]得到前5个。FilterStore和你展示的代码有什么关系? minimal reproducible example!
  • factory.stock_part.get(factory.stock_part[:2]) *** TypeError: 'FilterStore' object is not subscriptable
  • factory.stock_part.get(factory.stock_part.items[0:5]) *** TypeError: 'list' object is not callable
  • 请发布一个minimal reproducible example,我们可以运行它来模拟您的数据结构,以便我们提供帮助。目前这是一个没人能从中受益的猜谜游戏。
  • 感谢您的回复。但是 factory.stock_part.get(factory.stock_part[:2]) 或 factory.stock_part.get(factory.stock_part.items[0:5]) 不起作用。

标签:
python
simpy