第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Simpy 獲取正在等待資源可用的元素

Simpy 獲取正在等待資源可用的元素

犯罪嫌疑人X 2021-08-14 16:51:36
我正在使用 Simpy 和 Python 進行簡單的模擬。我的目標是擁有一個當時可以為 1 的資源,并計算等待該資源空閑的所有其他進程。例子 : Person 1 comes, takes the resource. waiting is 0 Person 2 arrives, waits. waiting is 1  Person 3 arrives, waits. waiting is 2 Person 1 leaves, releasing resource, so now Person 2 takes it. waiting is 1 到目前為止,這是我的代碼:import simpydef env1(env):    res = simpy.Resource(env,capacity=1)    while True:          yield env.timeout(5)        print("Arriving Person at ",(env.now))        env.process(getResource(env, res))def getResource(env,res):        with res.request() as req:            yield req            print("Person using resource at ", env.now)            yield env.timeout(20)            print("Leaving at ", env.now)調(diào)用模擬env = simpy.Environment()env.process(env1(env))env.run(until=500)我試過使用 .get_queue 方法,但它總是空的。使用 .queue 似乎總是添加元素,但從不從隊列中刪除它們。我也嘗試過使用 put 和 release 方法,但似乎沒有任何效果。我不正確理解這種方法是如何工作的,以及如何實現(xiàn)這一點。有任何想法嗎?謝謝!
查看完整描述

1 回答

?
森欄

TA貢獻1810條經(jīng)驗 獲得超5個贊

經(jīng)過一些研究和試驗/錯誤,我找到了解決方案?;旧?,當您使用“with res.request() as”語句時,您讓放置/釋放交互自行完成,這有助于避免錯誤。


為了獲取隊列狀態(tài)或與之交互,您只需在 with 語句之后調(diào)用它:(因為元素將在 with 語句之后位于資源隊列中)


import simpy


def env1(env):

    res = simpy.Resource(env,capacity=1)

    while True:  

        yield env.timeout(5)

        print("Arriving Person at ",(env.now))

        env.process(getResource(env, res))


def getResource(env,res):

        with res.request() as req:

            print("QUEUE SIZE: ",len(res.queue))

            yield req

            print("Person using resource at ", env.now)

            yield env.timeout(20)

            print("Leaving at ", env.now)


查看完整回答
反對 回復(fù) 2021-08-14
  • 1 回答
  • 0 關(guān)注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號