我正在将用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'资源对象没有帮助)
有什么建议吗?
答案 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)