0
我試圖在simpy中中斷一組嵌套的進程。從下面的代碼中可以看出,只有第一層進程被中斷事件中斷,我似乎無法找到一種方法來引用來自外部進程外部的另一個進程中定義的進程,以便中斷它們。以下是一個可重複使用的示例:如何在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進程只能被定義爲只有一層?