繁体   English   中英

Python3:如何停止/杀死线程

[英]Python3: How to stop/kill thread

我的代码运行 N 个线程。 我想在某些情况下停止特定线程,但其余线程应继续运行。 一旦每个线程完成它的工作,我就会做一些操作。 有没有办法在 Python 3 中停止运行线程。

我当前的代码是在 Python2 中实现的,它通过“_Thread__stop()”来实现。 Python3中是否有相同的东西?

做法是向线程“发出信号”,表示该结束了,然后线程需要退出。 这不像您杀死一个进程那样杀死,而是您的线程 function 的常规 state 机器行为。

例如,假设您的线程正在中断。 您应该在循环中插入一条 if 语句,指示线程 function if stop is True中断或返回 stop变量应该是与主线程(或需要停止线程的线程)共享的变量,将其更改为True 通常在此之后,停止线程将希望通过join()等待线程完成

杀死线程是一个坏习惯,最好是创建一个“标志”,它会告诉您线程何时完成工作。 考虑以下示例:

import threading
import random

class CheckSomething(threading.Thread):
    def __init__(self, variable):
        super(CheckSomething, self).__init__()
        self.start_flag = threading.Event()
        self.variable = variable

    def check_position(self, variable):
        x = random.randint(100)
        if variable == x:
            self.stop_checking()

    def run(self):
        while True:
            self.check_position(self.variable) 

    def stop_checking():
        self.start_flag.set()

    def stopped():
        return self.start_flag.is_set()

Event() 的 set() 方法将其状态设置为 True。 您可以在文档中阅读更多内容: https://docs.python.org/3.5/library/threading.html

因此,当您遇到要退出的条件时,您需要调用 stop_checking() 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM