Simpy如何访问资源队列中的对象
Simpy how to access objects in a resource queue
我正在将用 Simpy 2 编写的代码移至版本 3,但找不到与以下操作等效的方法。
在下面的代码中,我在 Simpy 资源的 activeQ 中访问作业对象(派生自 class 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
其中 returns Request() 对象的列表。对于这些对象,我无法访问创建它们的进程,也无法访问这些进程函数所属的对象。 (使用 Resource 对象的 'put_queue' 和 'get_queue' 没有帮助)
有什么建议吗?
在 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)
我正在将用 Simpy 2 编写的代码移至版本 3,但找不到与以下操作等效的方法。
在下面的代码中,我在 Simpy 资源的 activeQ 中访问作业对象(派生自 class 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
其中 returns Request() 对象的列表。对于这些对象,我无法访问创建它们的进程,也无法访问这些进程函数所属的对象。 (使用 Resource 对象的 'put_queue' 和 'get_queue' 没有帮助)
有什么建议吗?
在 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)