Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
停止或终止python线程_Python - Fatal编程技术网

停止或终止python线程

停止或终止python线程,python,Python,我在尝试终止或停止python中的线程时遇到了问题,因为没有任何官方api,我试图找到一种方法来停止指定的线程而不终止其他线程 每次启动线程时,我都会给它一个ID 现在在主线程上,用户可能会要求停止并删除线程。因为我启动了不同的线程,每个线程都有自己的slug\u ID 我想立即终止线程,我四处搜索,发现了两种可能性: 属性/标志:由于线程正在循环,我可以检查标志是否已被标记并返回,不幸的是,线程现在正在连续循环,因此,例如,如果线程此时处于睡眠状态,则不会立即死亡,但仅当检查标志所在的代码部

我在尝试终止或停止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