2017-11-19 9 views
0

私はP1とP2の2つのプロセスでシミュレーションを行っています。 R1とR2の2つのリソースがあります。Simpyでリソースの組み合わせを使用する並列プロセスをシミュレートする方法は?

P1はP2が10'

のためのR2を使用しています 10'のためにとR2が20' のために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

あなたのリソースで何が起こっているかを照会する必要があります。

さんのように自分のリソースを定義してみましょう:あなたはそうのようなこれらのリソースの可用性に関する質問をすることができます

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

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

は今、あなたは文が教えている場合、あなたを使用することができ、これを知っています次のプロセスをシミュレートします。

# 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

関連する問題