Simpy:如何捕获 simpy 过程的 return 值

Simpy: How to catch the return value of a simpy process

假设我有这样的场景:

def my_process(env, run_length):
    count = 0
    while True:
        env.timeout(1)
        count += 1
        if env.now >= run_length:
            break

    return count

my_env = simpy.Environment()

count = my_env.process(my_process(my_env, 100))

my_env.run(100)

如果我打印 count 的值,它将 return 生成器本身,而不是生成器触发的事件数的计数,这正是我想要的。我可以将对象传递给 my_process 并根据计数更改其状态,但是没有其他方法吗?

非常感谢您!!

您应该使用 yield 和另一个获取 return 值的过程。 (环境的运行时间应该大于100)。

import simpy

def my_process(env, run_length):
    count = 0;
    while True:
        yield env.timeout(1);
        count += 1;
        if env.now >= run_length:
            break;

    return count;

def first_process(env, run_length):
    return_value = yield env.process(my_process(env, run_length));
    print("return value: ", return_value);

my_env = simpy.Environment();
my_env.process(first_process(my_env, 100));
my_env.run(101);

简单 4 中的输出:

return value:  100