在Python中中断循环的漂亮方法
假设我们有以下代码:在Python中中断循环的漂亮方法,python,Python,假设我们有以下代码: import time class Foo(object): def __init__(self): pass def main_loop(self): while True: print('STAGE 1') time.sleep(1) print('STAGE 2') time.sleep(0.5)
import time
class Foo(object):
def __init__(self):
pass
def main_loop(self):
while True:
print('STAGE 1')
time.sleep(1)
print('STAGE 2')
time.sleep(0.5)
for i in range(20):
print('.')
time.sleep(0.1)
f = Foo()
f.main_loop()
我们想暂停并以某种方式恢复主循环。实现这一点最简单的方法之一是添加一种确定循环状态的标志,例如:
import time
class Foo(object):
def __init__(self):
self.is_paused = False
def main_loop(self):
while True:
print('STAGE 1')
time.sleep(1)
print('STAGE 2')
time.sleep(0.5)
for i in range(20):
while self.is_paused:
time.sleep(0.01)
print('.')
time.sleep(0.1)
f = Foo()
f.main_loop()
目前,我们可以在循环到达的时暂停循环,但不能在第1和第2阶段暂停。因此,我们应该将以下行复制并粘贴到中的几乎每一行,而循环
while self.is_paused:
time.sleep(0.01)
所以,我的问题是,有一种最正确/最美妙的方法来设置循环的暂停/恢复切换?
特别是,还有另一种方法可以不断检查标志的状态?那么产生语句呢?您打算在这里执行多线程操作吗?除了f.main\u loop()
之外的所有代码都将无法到达,因为该调用不会返回。@delirious莴苣我什么都不知道,让我们检查一下it@user2357112是的,对不起。我把事情搞砸了。我在实际代码中使用了多线程,我只是快速编写了一个小示例,没有考虑到这一点。通常,在多线程上下文中“不断检查标志状态”的“优雅”方法是使用。