You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从simpy.Environment中获取所有活跃进程(含嵌套进程)?

问题解答

能不能从Simpy环境中获取所有活跃进程?

Simpy的Environment本身没有提供官方公开的API来获取活跃进程列表,但可以通过其内部维护的_processes属性直接获取——这是一个集合,包含了当前所有处于活跃状态的进程(不管是父进程还是嵌套的子进程)。

批量中断所有活跃进程的方法

不需要让每个进程手动监听中断再递归中断子进程,直接遍历env._processes集合,逐个调用进程的interrupt()方法即可:

import simpy

def child_process(env):
    try:
        yield env.timeout(10)
    except simpy.Interrupt:
        print(f"子进程在时间{env.now}被中断")

def parent_process(env):
    env.process(child_process(env))
    try:
        yield env.timeout(20)
    except simpy.Interrupt:
        print(f"父进程在时间{env.now}被中断")

# 初始化环境并启动父进程
env = simpy.Environment()
env.process(parent_process(env))

# 运行到时间5时触发批量中断
env.run(until=5)

# 遍历所有活跃进程并中断
for process in list(env._processes):
    process.interrupt()

# 继续运行查看中断效果
env.run()

注意事项

  • _processes是Simpy的内部属性(以下划线开头),官方不保证其在未来版本中的兼容性,但在当前主流版本(如Simpy 4.x)中稳定可用。
  • 进程结束后会自动从_processes中移除,所以不需要手动维护列表的清理工作。

内容的提问来源于stack exchange,提问作者gameveloster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 12:45:05