【发布时间】:2020-05-13 04:32:42
【问题描述】:
我正在使用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()
【问题讨论】:
标签: python simulation simpy