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
假设我有这样的场景:
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