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()
这行得通。我不知道我能做到。哦!
我的代码中有一小部分用于检查非守护进程和非主线程的活动线程。这些线程最终需要关闭,但我检查它们的部分重复如下:
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()
这行得通。我不知道我能做到。哦!