在模拟中,我希望能够在调用释放资源的另一个函数之前在一个函数中请求资源。当我使用下面显示的方法时,它不起作用并且出现错误。提前致谢。
(在功能 1 中):
req = resource.request()
yield req
yield.env.process(function2( ))
(在功能 2 中):
resource.release(req)
这可能吗?如果需要任何其他信息,请告诉我还有什么。
在模拟中,我希望能够在调用释放资源的另一个函数之前在一个函数中请求资源。当我使用下面显示的方法时,它不起作用并且出现错误。提前致谢。
(在功能 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