gpt4 book ai didi

python - 在 SimPy 中以与请求位置不同的函数释放资源

转载 作者:行者123 更新时间:2023-12-01 05:07:14 27 4
gpt4 key购买 nike

在模拟中,我希望能够在调用另一个释放资源的函数之前在一个函数中请求资源。当我使用下面所示的方法时,它不起作用并且出现错误。提前致谢。

(在函数 1 中):

req = resource.request()
yield req

yield.env.process(function2( ))

(在函数 2 中):

resource.release(req)

这可能吗?如果需要任何其他信息,请告诉我。

最佳答案

从你的例子来看,不清楚为什么它不起作用。下面的模拟按预期工作:

import simpy


def func1(name, env, res):
req = res.request()
yield req
print(name, 'got resource at', env.now)
yield env.process(func2(name, env, res, req))
print(name, 'done')


def func2(name, env, res, req):
yield env.timeout(1)
yield res.release(req)
print(name, 'released at', env.now)


env = simpy.Environment()
res = simpy.Resource(env, capacity=1)
env.process(func1('A', env, res))
env.process(func1('B', env, res))
env.run()

输出:

A got resource at 0
A released at 1
A done
B got resource at 1
B released at 2
B done

关于python - 在 SimPy 中以与请求位置不同的函数释放资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24785278/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com