python线程强制暂停、恢复、停止(非标志位)

该文章介绍了一种通过ctypes库访问kernel32.dll函数来实现Python线程的强制暂停和恢复的方法。CustomThread类扩展了threading.Thread,添加了stop、pause和resume方法,分别利用kernel32的SuspendThread和ResumeThread函数来控制线程的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查了好多资料,网上无非都是通过event 标志位进行python线程的暂停和停止。并不是强制暂停和恢复线程。直接上代码吧

import threading
import ctypes


class CustomThread(threading.Thread):
    def __init__(self, target=None, args=(), kwargs=None, name=''):
        threading.Thread.__init__(self, target=target, args=args, kwargs=kwargs, name=name)
        self.kernel32 = ctypes.windll.kernel32
        self.thread_flag = 0

    def stop(self):
        ctypes.pythonapi.PyThreadState_SetAsyncExc(self.ident, ctypes.py_object(SystemExit))
        self.thread_flag = 0
        return self.thread_flag

    def start(self):
        threading.Thread.start(self)
        return

    def pause(self):
        handle = self.kernel32.OpenThread(0x0002, False, self.ident)
        self.kernel32.SuspendThread(handle)
        self.kernel32.CloseHandle(handle)
        self.thread_flag += 1
        return self.thread_flag

    def resume(self):
        handle = self.kernel32.OpenThread(0x0002, False, self.ident)
        self.kernel32.ResumeThread(handle)
        self.kernel32.CloseHandle(handle)
        self.thread_flag -= 1
        return self.thread_flag

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值