2017-11-19 30 views
0

저는 P1과 P2의 두 프로세스로 시뮬레이션을했습니다. R1과 R2의 두 가지 리소스가 있습니다.Simpy에서 자원의 조합을 사용하는 병렬 프로세스를 시뮬레이트하는 방법은 무엇입니까?

P1 20 '및 R2 10' P2 10 '

에 대한 R2를 사용하기위한 R1을 사용

나는 Simpy에를 사용하여 다음과 같은 논리를 달성하고 몇 가지 지침이 필요하고 싶습니다 :

If R2 is free: 
    run P2 
If R1 and R2 are free: 
    run P1 

가 감사를 !

답변

0

SimPy가 제공하는 제품은 resource.request()입니다. 첫 번째 경우의 작은 예입니다.

resource_free = yield my_resource.request() 
if my_resource_request() in resource_free: 
    TODO: P1.run() 

여기서 우리가하는 일은 우리가 자원을 요청한다는 것입니다. 리소스가 생성되면 사용이 자유가되어 resource_free으로 가져갑니다.

request() docs

0

당신은 당신의 자원에 무슨 일이 일어나고 있는지 조회 할 필요가있다. 이제

# Number of users currently using the resources. 
num_users_R1 = R1.count() 
num_users_R2 = R2.count() 

당신이 문은 말할 경우이 당신이 당신을 사용할 수 있습니다 알고

R1 = simpy.Resource(env, capacity = 1) 
R2 = simpy.Resource(env, capacity = 1) 

당신은 너무 같은 이들 자원의 가용성에 대해 질문을 할 수 있습니다

은의이 같은 자원을 정의 할 수 sim이 따라야 할 프로세스.

# if both are free do process 1 
if num_users_R2 + num_users_R2 == 2: 
    process_1() 

# otherwise do process 2 
else: 
    process_2() 

당신은 공식 문서에서 자원 명령에 대한 자세한 내용을보실 수 있습니다 : http://simpy.readthedocs.io/en/latest/api_reference/simpy.resources.html