社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

SCB

SCB 最近创建的主题
SCB 最近回复了
6 年前
回复了 SCB 创建的主题 » 强制退出运行python中的线程[duplicate]

如果您明确地调用 time.sleep() 作为线程的一部分(比如轮询一些外部服务),Phillipe方法的一个改进是在 event wait() 方法无论你在哪里 sleep()

例如:

import threading

class KillableThread(threading.Thread):
    def __init__(self, sleep_interval=1):
        super().__init__()
        self._kill = threading.Event()
        self._interval = sleep_interval

    def run(self):
        while True:
            print("Do Something")

            # If no kill signal is set, sleep for the interval,
            # If kill signal comes in while sleeping, immediately
            #  wake up and handle
            is_killed = self._kill.wait(self._interval)
            if is_killed:
                break

        print("Killing Thread")

    def kill(self):
        self._kill.set()

然后运行它

t = KillableThread(sleep_interval=5)
t.start()
# Every 5 seconds it prints:
#: Do Something
t.kill()
#: Killing Thread

使用的好处 WAIT() 而不是 睡眠() 定期检查事件是,您可以在较长的睡眠时间间隔内编程,线程几乎立即停止(否则 小精灵 在我看来,处理exit的代码要简单得多。