在完成所有Python单元测试后删除所有打开的线程

2024-06-13 14:08:48 发布

您现在位置:Python中文网/ 问答频道 /正文

this thread详细讨论了为什么终止线程不是一个好主意。我同意当我们谈论一个实际的计划时。 我正在为几个组件编写单元测试,以及它们之间的一些集成测试。有些需要穿线。当测试失败时,一些线程保持打开状态,锁定在队列的.get()调用中。这会导致整个测试套件陷入困境而无法完成。我正在运行ptw(pytest watch)或使用inotifywait自定义pytest循环,以监视文件中的更改以重新运行该套件。在

当所有的测试都完成后,我希望套件终止所有剩余的线程来完成循环,而不是因为测试失败而被困在某个刚刚打开的线程上。这可能吗?在


Tags: get套件队列pytest状态组件单元测试this
1条回答
网友
1楼 · 发布于 2024-06-13 14:08:48

没有一种优雅的方法来停止线程,但是可以将它们的daemon设置为True。在

代码段:

import threading

all_child_threads = [thread for thread in threading.enumerate() if thread != threading.main_thread()]
for thread in all_child_threads:
    thread.daemon = True

然后它们将在主线程终止时终止。在

相关问题 更多 >