iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 强制停止多线程运行
  • 444
分享到

Python 强制停止多线程运行

多线程Python 2023-01-31 00:01:46 444人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

强制停止多线程运行 by:授客 QQ:1033553122   #!/usr/bin/env python # -*- coding:utf-8 -*-     __author__ = 'shouke'   import threadi

强制停止多线程运行

by:授客 QQ:1033553122

 

#!/usr/bin/env python

# -*- coding:utf-8 -*-

 

 

__author__ = 'shouke'

 

import threading

import time

import inspect

import ctypes

 

 

def _async_raise(tid, exctype):

    """raises the exception, perfORMs cleanup if needed"""

    tid = ctypes.c_long(tid)

    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(thread):

    _async_raise(thread.ident, SystemExit)

 

 

def test():

    try:

        while True:

            print('-------')

            time.sleep(0.5)

    except Exception as e:

        print('Exception:%s' % e)

    finally:

        print('stop running test function')

 

 

if __name__ == "__main__":

    t = threading.Thread(target=test)

    t.start()

    time.sleep(5)

    stop_thread(t)

    print("main thread running")

    print("main thread running")

    print("main thread running")

    print("main thread running")

 

运行结果:

 

 

 

结论:

按上述方法是可以停止多线程的,但是需要注意的地方是,线程退出前,会执行try...finally中的代码,如果代码包含了多层try...finally,每一层的finally中的语句都会被执行,如下:

 

修改代码如下

def test():

    try:

        try:

            while True:

                print('-------')

                time.sleep(0.5)

        except Exception as e:

            print('Exception:%s' % e)

        finally:

            print('stop running test function')

        print('outer try')

    except Exception:

        pass

    finally:

        print('outer try finally')

 

再次运行,结果

 

 

--结束END--

本文标题: Python 强制停止多线程运行

本文链接: https://www.lsjlt.com/news/181944.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 强制停止多线程运行
    强制停止多线程运行 by:授客 QQ:1033553122   #!/usr/bin/env python # -*- coding:utf-8 -*-     __author__ = 'shouke'   import threadi...
    99+
    2023-01-31
    多线程 Python
  • java多个线程运行如何停止
    在Java中,有几种常见的方法可以停止线程的运行: 使用标志变量:在线程的运行方法中,使用一个标志变量控制线程是否继续运行。当需要...
    99+
    2024-02-29
    java
  • 强行停止python子线程最佳方案
        子线程的强制性终止是我们实际应用时经常需要用到的,然而python官方并没有给出相关的函数来处理这种情况。网上找到一个挺合理的解决方案,这里分享给大家。import threading import time import ins...
    99+
    2023-01-31
    线程 方案 python
  • db2如何强制停止数据库运行
    要强制停止DB2数据库的运行,可以使用以下步骤: 打开DB2控制台或命令行窗口。 输入以下命令以连接到数据库实例: db2 ...
    99+
    2024-04-09
    db2
  • C++多线程强制终止详细
    目录前言: 故事的起因来源于我在优化他人c++源码的时候,想通过多线程的方式提升程序的运算效率,主要存在以下需求和难点: 多个线程并行跑模型,看哪个模型跑的快,跑出来后结束...
    99+
    2024-04-02
  • labview如何强制停止程序
    在LabVIEW中,可以使用以下方法强制停止程序:1. 使用Abort Execution按钮:在LabVIEW的工具栏上,可以找到...
    99+
    2023-09-15
    labview
  • Linux如何强制终止运行
    在Linux中,可以使用以下几种方法强制终止运行:1. 使用kill命令:kill命令用于发送信号给进程,可以使用kill命令发送S...
    99+
    2023-08-25
    Linux
  • eclipse怎么停止程序运行
    要停止Eclipse中正在运行的程序,你可以使用以下几种方法:1. 点击运行菜单栏中的停止按钮(红色正方形)。2. 使用快捷键Ctr...
    99+
    2023-08-17
    eclipse
  • python怎么停止子线程
    在Python中,无法直接停止子线程。但可以通过设置一个标志位,在子线程中定期检查该标志位,以判断是否停止线程。以下是一个示例代码:...
    99+
    2023-09-04
    python
  • Java 多线程中stop停止线程实例分析
    这期内容当中小编将会给大家带来有关Java 多线程中stop停止线程实例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。package com.stop;import java.ut...
    99+
    2023-06-02
  • python怎么停止当前运行的函数
    要停止当前运行的函数,可以使用`return`语句来终止函数的执行。例如: def my_function(): # 一些代...
    99+
    2023-10-28
    python
  • python怎么停止已启动的线程
    在Python中,要停止一个已经启动的线程,可以通过设置一个标志变量来告诉线程应该停止。然后在线程的代码中,定期检查这个标志变量,如...
    99+
    2023-08-11
    python
  • dos中怎么停止正在运行的程序
    在dos中停止正在运行程序的方法:1.打开dos窗口;2.执行“tasklist/svc”命令,查看正在运行的程序;3.使用“taskkill /f /im”命令停止程序;具体步骤如下:首先,在计算机中使用组合键“win+R”运行cmd,打...
    99+
    2024-04-02
  • java线程停止执行的方法有哪些
    Java线程停止执行的方法有以下几种:1. 使用标志位停止线程:在线程的执行过程中,通过设置一个标志位来控制线程是否停止执行。线程可...
    99+
    2023-08-08
    java
  • Python强制关闭线程的一种办法(可行
    由于经常被Python非Daemon线程阻塞,导致程序无法结束。所以到处找办法解决,但是经常没有找到点上。导致无功而返。 今天突发奇想来搜了一下相关的解决方案,竟然被我找到了。 首先是百度了一下(懒得开VPN) 然后找到了一个网友分...
    99+
    2023-01-31
    线程 办法 Python
  • python运行时强制刷新缓冲区
    需求:打印一颗”*”休息1s 代码如下: #!/usr/bin/python #coding=utf-8 ''' 暂停1s输出 ''' import time def printStar(n): for i i...
    99+
    2023-01-31
    缓冲区 python
  • Python多线程之线程创建和终止
    python主要是通过thread和threading这两个模块来实现多线程支持。python的thread模块是比较底层的模块,python的threading模块是对thread做了一些封装,可以更加方便的被使用。但是python(c...
    99+
    2023-01-31
    线程 多线程 Python
  • 阿里云服务器怎么停止运行程序
    如果您想停止阿里云服务器程序运行,请按照以下步骤操作: 停止运行程序:在开始菜单中打开阿里云的运行界面。在控制面板中,进入"服务"选项卡,找到"云服务器"服务并单击停止按钮。 删除停止服务的帐户:在您停止了服务后,您可以通过该帐户来查看...
    99+
    2023-10-27
    阿里 服务器 程序
  • python中强制关闭线程方法
    import threading import time import inspect import ctypes def _async_raise(tid, exctype): """raises the exception,...
    99+
    2023-01-31
    线程 方法 python
  • 如何暂停一个正在运行的线程
    要暂停一个正在运行的线程,可以使用Thread类的`suspend()`方法将线程挂起,然后使用`resume()`方法恢复线程的执...
    99+
    2023-09-28
    线程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作