Sla*_*off 3 python real-time while-loop
我不知道这是一个简单的问题还是不可能的问题,但我找不到任何关于它的东西,所以我想我会问它。
当循环仍在运行时,是否可以从 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
Run Code Online (Sandbox Code Playgroud)
至少在这些方面。重要的是这些在 while 循环之外返回,以便 while 循环在后台运行,但它只在被询问时才给出结果,或者类似的东西。
而是创建一个生成器。
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)
Run Code Online (Sandbox Code Playgroud)
编辑:
或者也许是一个协程。
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8679 次 |
| 最近记录: |