0

我正在将用 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”没有帮助)

有什么建议么 ?

4

1 回答 1

1

在 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)
于 2016-08-31T05:35:30.167 回答