【发布时间】:2017-08-08 19:34:45
【问题描述】:
我试图在 simpy 中中断一组嵌套进程。从下面的代码中可以看出,只有第一层进程被中断事件中断,我似乎无法找到一种方法来从外部进程外部引用另一个进程中定义的进程以中断它们。下面是一个最小可重现的例子:
import simpy
env = simpy.Environment()
def process_one():
try:
yield env.timeout(5)
print("inside process one")
yield env.process(process_two())
yield env.timeout(10)
except simpy.Interrupt:
print("interrupted at ", env.now)
def process_two():
try:
yield env.timeout(5)
print("inside process two")
yield env.timeout(5)
print("finishing process two")
except simpy.Interrupt:
print("process two interrupted at", env.now)
process = env.process(process_one())
def interruption(time):
yield env.timeout(time)
process.interrupt()
env.process(interruption(6))
env.run(until=30)
流程一被中断,但流程二继续其业务。如果我将env.process(process_two) 分配给process_one 内的变量,我无法从process_one 范围之外访问它。有没有办法导致中断来中断父进程中定义的所有正在进行的进程,或者 simpy 中的所有进程都必须只定义一层深?
【问题讨论】: