[英]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.