2016-08-30 2 views
0

Simpy 2로 작성된 코드를 버전 3으로 이동 중이며 다음 작업에 해당하는 것을 찾을 수 없습니다.Simpy 리소스 큐에있는 개체에 액세스하는 방법

아래 코드에서 Simpy 자원의 activeQ에서 작업 객체 (job_ (프로세스) 클래스에서 파생 됨)에 액세스합니다.

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 

은 (02) 3에서이 작업을 수행하기 위해, 나는() 객체 요청의 목록을 반환 다음

buffers[mc_no].users

을 시도했다. 이러한 객체를 사용하여 객체를 생성 한 프로세스 나 객체가 속한 객체에 액세스 할 수 없습니다. ('put_queue'및 'get_queue'를 사용하여 리소스 객체가 도움이되지 않음)

제안 사항이 있습니까?

답변

0

SimPy에서 요청 개체는 생성 된 프로세스를 알 수 없습니다.

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

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

긴 파이썬의 땅을 살 그러나, 우리는 파이썬 땅에 있기 때문에 당신은이 정보를 쉽게 추가 할 수 있습니다! - 고맙습니다. 나는 후속 질문을 가지고있다. 나는 Simpy 2에서와 같이 프로세스 함수 go()를 가진 직업 클래스를 가지고있다. req.obj = self를 사용하면 객체 데이터를 스틱 (stick)한다. 내가 프로세스를 중단하고 작업 객체의 흐름을 다시 시작하기 때문에 필요합니다. –

+0

신경 쓰지 마라. 알아 냈어. 그냥 개체 생성자에서 프로세스를 만들고 특성으로 유지 한 다음 작업 개체를 통해 액세스하십시오. –

관련 문제