我在尝试杀死或停止python中的一个线程时遇到问题,因为我没有任何正式的api我试图找到一种方法来阻止指定的线程而不会杀死其他线程。
每次我发布一个帖子我给它一个ID
t = threading.Thread(name=slug_ID, target=function)
现在在主线程上,用户可能会要求停止并删除该线程。由于我发布了不同的线程,每个线程都有自己的slug_ID。
for thread in threading.enumerate(): if (thread.getName()==slug_ID)): #thread.kill()
我想立即杀死这个帖子,我已经四处寻找,我发现了两种可能性:
try: while True: thread_do_stuff() except Custom_signal: #exitThread
问题在于我不知道如何打包和捕捉自定义信号,关于如何解决问题的任何想法?
答案 0 :(得分:3)
Python不提供用于杀死线程的API,并且已经充分讨论了原因here。例如,Java用于公开杀死线程的特定方法,但很久以前就被删除了。
在Python中,信号仅在main thread中处理。因此,你的第二种方法是行不通的。
如果需要突然停止并发执行,唯一安全的方法是使用进程而不是线程。