您现在的位置是:首页 > 正文

python多线程—终止子线程

2024-02-01 02:18:30阅读 4
总体思路
1、获取需要终止的子线程id
2、根据子线程id,终止子线程。
过程
  • 获取子线程id:
import threading
Thread_id = threading.get_ident()  # 获取子线程的id值
  • 线程终止函数
def async_raise(Thread_id, exctype):
    """raises the exception, performs cleanup if needed"""
    tid = ctypes.c_long(Thread_id)
    if not inspect.isclass(exctype):
        exctype = type(exctype)
    res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(exctype))
    if res == 0:
        raise ValueError("invalid thread id")
    elif res != 1:
        # """if it returns a number greater than one, you're in trouble,
        # and you should call it again with exc=NULL to revert the effect"""
        ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None)
        raise SystemError("PyThreadState_SetAsyncExc failed")
  • 调用终止函数
def stop_thread_func():
    async_raise(tid, SystemExit)

转自:https://blog.51cto.com/u_14224/6457768

网站文章

  • 中间件---rabbitMQ学习笔记

    中间件---rabbitMQ学习笔记

    1、中间件是什么?中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的 。比如微服务,分布式...

    2024-02-01 02:18:23
  • python之__doc__

    十一 __doc__ 类的描述信息 class Foo: '我是描述信息' pass f = Foo() print(f.__doc__) # 打印描述信息, ''&#...

    2024-02-01 02:18:16
  • CentOS 8 更换yum国内源

    CentOS 8 更换yum国内源

    2024-02-01 02:17:47
  • javascript 数组的解构赋值

    右边不是数组(或者不是可遍历的解构,不具有lterator接口)Generator 函数(原生具有lterator接口)默认值可以使用解构赋值的其他变量,但该变量必须已经声明。),判断一个位置是否有值,只有当一个数组成员严格等于。之前,为变量赋值,只能直接指定值。解构赋值不成功,则变量的值等于。ES6内部使用严格相等(ES6 允许如下写法。

    2024-02-01 02:17:39
  • IoC 及 AOP 使用扩展

    IoC 及 AOP 使用扩展

    JOP与AOP 扩展以及JOP与AOP注解的使用。

    2024-02-01 02:17:33
  • Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)

    Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)

    Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)

    2024-02-01 02:17:04
  • 微信小程序分包

    微信小程序分包

    微信小程序分包1.为什么要分包  在微信小程序上线时,要求整个小程序所有分包大小不超过 16M(主包 + 所有分包, 单个分包/主包大小不能超过 2M。如果你主包大小大于2M则需要做一些处理,比如分包...

    2024-02-01 02:16:56
  • 深度学习论文分享(四)Retentive Network: A Successor to Transformer for Large Language Models

    深度学习论文分享(四)Retentive Network: A Successor to Transformer for Large Language Models

    在此仅做翻译在这项工作中,我们提出保留网络(RETNET)作为大型语言模型的基础架构,同时实现训练并行性,低成本推理和良好的性能。我们从理论上推导了递归和注意力之间的联系。然后提出了序列建模的保留机制...

    2024-02-01 02:16:50
  • js手机端、h5页面如何判断点击还是滑动

    在手机h5端页面使用上下滑动事件实现翻页等一系列功能时,可以使用触摸结束的位置 - 触摸开始的位置判断,当结果大于0时,向上翻页,当结果小于0时向下翻页。 document.addEventListe...

    2024-02-01 02:16:42
  • springboot整合jpa,步骤详细(图文结合讲解)

    springboot整合jpa,步骤详细(图文结合讲解)

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机...

    2024-02-01 02:16:12