【问题标题】:Simpy: How to catch the return value of a simpy processSimpy:如何捕获 simpy 进程的返回值
【发布时间】:2020-08-20 17:55:15
【问题描述】:

想象一下我有这样的场景:

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 的值,它将返回生成器本身,而不是我想要的由生成器触发的事件数的计数。我可以将一个对象传递给 my_process 并根据计数更改其状态,但没有其他方法吗?

非常感谢您!

【问题讨论】:

    标签: simpy


    【解决方案1】:

    您应该使用 yield 和另一个流程来获取返回值。 (环境的运行时间应该在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);
    

    simpy 4 中的输出:

    return value:  100
    

    【讨论】:

    • 有人请删除那些;s ;)
    猜你喜欢
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 2021-07-24
    相关资源
    最近更新 更多