在 SimPy 中,如果我处理了 a
、b
和资源 r
并执行以下操作:
yield request, self, r #request done in process a
如何从进程b中释放资源?
yield release, a, r #release done in b (being a an instance of class a), doesn't work
我也尝试过:
r.activeQ.remove(a)
它实际上从事件队列中删除,但是它不会执行执行 yield
时执行的所有隐式步骤,结果证明这是毫无意义的。
可以吗?如果是,怎么办?
最佳答案
嗯,我的问题是进程 b
实际上处于非事件状态,因此任何 yield
调用都会失败。
我想出的解决方法是
activate(a, a.function()) #called from process b
哪里
class a(Process):
def function(self):
yield release, self, r
yield passivate, self
希望这可以帮助任何遇到同样问题的人。
关于python - 释放另一个进程占用的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4701910/