Я изучаю моделирование дискретных событий с помощью Simpy, у меня есть некоторые проблемы, связанные с вытесняющими ресурсами, мне нужно, как возобновить вытесненный процесс после обработки (прерывания процесса), вот мой код:
import simpy
def resource_user(name, env, resource, wait, prio):
yield env.timeout(wait)
with resource.request(priority=prio) as req:
print('%s requesting at %s with priority=%s' % (name, env.now, prio))
yield req
print('%s got resource at %s' % (name, env.now))
try:
yield env.timeout(3)
except simpy.Interrupt as interrupt:
by = interrupt.cause.by
usage = env.now - interrupt.cause.usage_since
print('%s got preempted by %s at %s after %s' %
(name, by, env.now, usage))
env = simpy.Environment()
res = simpy.PreemptiveResource(env, capacity=1)
p1 = env.process(resource_user(1, env, res, wait=0, prio=0))
p2 = env.process(resource_user(2, env, res, wait=1, prio=0))
p3 = env.process(resource_user(3, env, res, wait=2, prio=-1))
env.run()