问题描述
想象一下我有这种情况:
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并根据计数更改其状态,但是没有其他方法吗?
非常感谢您!
解决方法
您应该使用 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