过滤器存储队列

2024-09-29 07:20:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个FilterStore,在模拟过程中有一个队列过滤器存储。获取在某些时候。现在我有两个问题:

  1. 有没有办法看到队列中的实际元素,而不仅仅是对象编号?与FilterStore.get_队列我得到这个输出: [FilterStoreGet()对象位于0x221a47c6080,FilterStoreGet()对象位于0x221a47c6eb8]。但我想要一份有实际姓名的名单,例如[1,2,3]。

  2. 有没有办法操纵队列?我知道队列中的元素正在用FIFO处理,但我想用后进先出或SIRO。


Tags: 对象元素过滤器get队列过程编号姓名
2条回答
  1. 当您获得一个queue元素(使用yield)时,FilterStore返回该元素。此外,还可以使用dict来命名元素。在

让我们创建3个理发师:

barberNames = ['Baber A', 'Baber B', 'Baber C']
barberList = [simpy.Resource(env, capacity=1) for i in range(3)]
barberDict = dict(zip(barberNames , barberList))

现在,创建一个过滤器存储到理发店:

^{pr2}$

如果我们理发店的一位客户不需要特定的理发师,我们可以从创建的理发店中挑选一位理发师:

clientBarber = yield barbeariaStore.get()

如果您打印clientBarber,您将看到他的名字(如barberNames)

  1. 在这种情况下,我们的客户需要一个特定的理发师。在

假设他想要“理发师A”:

^{4}$

现在,首选理发店“理发师A”。在

我在另一个论坛上回答了我的问题。我也会把它贴在这里,因为我相信其他人最终也会有同样的问题。在

所以不可能操纵FilterStore.get_队列直接地,但是通过编写Store的子类,您将得到一个行为不同的队列(例如LIFO)。在

class PrependList(list):
def append(self, item):
    self.insert(0, item)

class LCFSStore(Store):
    put = BoundClass(StorePut)
    get = BoundClass(FilterStoreGet) 
    GetQueue = PrependList

相关问题 更多 >