我不知道这是一个简单的问题还是不可能或任何事情,但我找不到任何东西,所以我想我会问它。
在该循环仍在运行时,是否可以从while循环返回值?基本上我想做的是在while循环中不断更新向量,但能够在不停止while循环的情况下返回值。这可能吗?我是否只需要分解程序并将while循环放在一个单独的线程中,或者我可以在一个函数中执行它吗?
此外,我更喜欢一种计算密集型(显然)的方法,并且一种与速率受限的while循环兼容,因为这种方法肯定会受到速率限制。
同样,如果这是一个愚蠢的问题,请告诉我,我会将其删除,但我无法找到相关文档。
代码我试图用以下方法实现:
def update(self, x_motion, y_motion, z_motion):
self.x_pos += self.x_veloc
self.y_pos += self.y_veloc
self.z_pos += self.z_veloc
self.x_veloc += self.x_accel
self.y_veloc += self.y_accel
self.z_veloc += self.z_accel
self.x_accel = x_motion[2]
self.y_accel = y_motion[2]
self.z_accel = z_motion[2]
while True:
self.update(x_motion, y_motion, z_motion)
print vector.x_accel
至少在这些方面有所作为。重要的是,这些返回在while循环之外,以便while循环在后台运行,但它只在询问时给出结果,或类似的东西。
答案 0 :(得分:4)
改为创建一个生成器。
def triangle():
res = 0
inc = 1
while True:
res += inc
inc += 1
yield res
t = triangle()
print next(t)
print next(t)
print next(t)
print next(t)
修改强>
或者也许是一个协程。
def summer():
res = 0
inc = 0
while True:
res += inc
inc = (yield res)
s = summer()
print s.send(None)
print s.send(3)
print s.send(5)
print s.send(2)
print s.send(4)
答案 1 :(得分:3)
您要找的是yield
def func():
while True:
yield "hello"
for x in func():
print(x):
生成器也可以像列表推导一样编写:
看看这个问题:
答案 2 :(得分:0)
如果我理解你和你想要的代码。
我可能会想到尝试找到相对于时间的位置,速度和加速度方程。
所以你不需要保持,while循环运行,你需要的是将它转换为一个函数,并使用2个函数调用之间的时间差,你可以执行你想要的计算,只有当你调用函数,而不是让while循环一直运行。