停止或终止python线程
我在尝试终止或停止python中的线程时遇到了问题,因为没有任何官方api,我试图找到一种方法来停止指定的线程而不终止其他线程 每次启动线程时,我都会给它一个ID 现在在主线程上,用户可能会要求停止并删除线程。因为我启动了不同的线程,每个线程都有自己的slug\u ID 我想立即终止线程,我四处搜索,发现了两种可能性:停止或终止python线程,python,Python,我在尝试终止或停止python中的线程时遇到了问题,因为没有任何官方api,我试图找到一种方法来停止指定的线程而不终止其他线程 每次启动线程时,我都会给它一个ID 现在在主线程上,用户可能会要求停止并删除线程。因为我启动了不同的线程,每个线程都有自己的slug\u ID 我想立即终止线程,我四处搜索,发现了两种可能性: 属性/标志:由于线程正在循环,我可以检查标志是否已被标记并返回,不幸的是,线程现在正在连续循环,因此,例如,如果线程此时处于睡眠状态,则不会立即死亡,但仅当检查标志所在的代码部
- 属性/标志:由于线程正在循环,我可以检查标志是否已被标记并返回,不幸的是,线程现在正在连续循环,因此,例如,如果线程此时处于睡眠状态,则不会立即死亡,但仅当检查标志所在的代码部分时,线程才会死亡
- 信号:当我在主线程上启动事件时,线程将捕获事件并优雅地退出,不幸的是,我应该创建自定义信号,以便仅停止我想要终止的特定线程,我认为如下所示:
问题是,我不知道如何包装和捕获自定义信号,有没有关于如何解决问题的想法?Python不提供用于终止线程的API,原因已经讨论过了。例如,Java用于公开特定的终止线程的方法,但它早就被删除了 在Python中,信号仅在中处理。因此,您的第二种方法不起作用 如果需要突然停止并发执行,唯一安全的方法是使用进程而不是线程
t = threading.Thread(name=slug_ID, target=function)
for thread in threading.enumerate():
if (thread.getName()==slug_ID)):
#thread.kill()
try:
while True:
thread_do_stuff()
except Custom_signal:
#exitThread