python 中的 While 循环和重复代码

While loops and duplicate code in python

我的代码中有一小部分用于检查非守护进程和非主线程的活动线程。这些线程最终需要关闭,但我检查它们的部分重复如下:

threads = [th for th in threading.enumerate() 
           if th is not threading.main_thread() or not th.isDaemon()]
while threads:
    threads = [th for th in threading.enumerate() 
               if th is not threading.main_thread() or not th.isDaemon()]
    time.sleep(5)
exit()

我也可以尝试创建一个名为 count 的变量,并使用函数 threading.active_count() 检查它。只要有可能,我总是尽量避免创建 count 变量。它确实比代码重复要好。还有其他更优雅的方法吗?

threads = [th for th in threading.enumerate() 
           if th is not threading.main_thread() or not th.isDaemon()]
while threads:
    # pseudocode:
    kill threads.pop()
    time.sleep(5)
exit()

我刚刚尝试了一些东西,它奏效了。这可能是一个愚蠢的解决方案,也可能是一个超级愚蠢的问题。无论如何,这就是我所做的:

while [th for th in threading.enumerate() 
       if th is not threading.main_thread() and not th.isDaemon()]:
    sleep(5)
exit()

这行得通。我不知道我能做到。哦!