我的代码运行N个线程。我想在某些情况下停止特定线程,但其余线程应继续运行。每个线程完成工作后,我都会执行一些操作。有没有一种方法可以停止在Python 3中运行线程。
我当前的代码是在Python2中实现的,该代码通过“ _Thread__stop()”来实现。 Python3中有什么相同的东西吗?
答案 0 :(得分:0)
实践是“到”完成线程的“信号”,然后该线程需要退出。这不是像杀死进程那样杀死用户,而是线程函数的常规状态机行为。
例如,假设您的线程正在运行。您应该在循环内插入一条if语句,以指示线程函数中断或返回 if stop is True
。 stop
变量应该是与主线程(或需要停止线程的线程)共享的变量,该变量会将其更改为True
。通常在此之后,停止线程将要等待join()
答案 1 :(得分:0)
杀死线程是一个坏习惯,最好是创建一个“标志”,它会在线程完成工作时告诉您。 考虑以下示例:
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()。