在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是的,对不起。我把事情搞砸了。我在实际代码中使用了多线程,我只是快速编写了一个小示例,没有考虑到这一点。通常,在多线程上下文中“不断检查标志状态”的“优雅”方法是使用。