Simpy如何访问资源队列中的对象

时间:2016-08-30 12:55:52

标签: python simulation simpy

我正在将用Simpy 2编写的代码移动到版本3,但无法找到与以下操作等效的代码。

在下面的代码中,我在Simpy资源的activeQ中访问作业对象(从类job_(Process)派生)。

def select_LPT(self, mc_no):
    job = 0
    ptime = 0
    for j in buffer[mc_no].activeQ:
        if j.proc_time[mc_no] > ptime:
            ptime = j.proc_time[mc_no]
            job = j

    return job

要在Simpy 3中执行此操作,我尝试了以下

buffers[mc_no].users

返回Request()对象的列表。使用这些对象,我无法访问创建它们的进程,也无法访问这些进程函数所属的对象。 (使用' put_queue'和' get_queue'资源对象没有帮助)

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在SimPy中,请求对象不知道哪个进程创建了它们。但是,由于我们在Python中,您可以轻松添加此信息:

with resource.request() as req:
    req.obj = self
    yield req
    ...

 # In another process/function
 for user_req in resource.users:
     print(user_req.obj)