如何在Python中停止线程中的for循环?
我试图用Python创建一个脚本来学习线程,但我似乎无法停止线程中的for循环。目前,我正在使用pyInstaller编译脚本并结束线程进程,我知道这不是最好的方法,有人能解释一下如何在命令上结束线程吗?我读过很多其他问题,但我似乎不明白如何以“正确”的方式停止线程。以下是我目前正在使用的代码来测试它:如何在Python中停止线程中的for循环?,python,multithreading,loops,for-loop,break,Python,Multithreading,Loops,For Loop,Break,我试图用Python创建一个脚本来学习线程,但我似乎无法停止线程中的for循环。目前,我正在使用pyInstaller编译脚本并结束线程进程,我知道这不是最好的方法,有人能解释一下如何在命令上结束线程吗?我读过很多其他问题,但我似乎不明白如何以“正确”的方式停止线程。以下是我目前正在使用的代码来测试它: class Thread(Thread): def __init__(self, command, call_back): self._command = com
class Thread(Thread):
def __init__(self, command, call_back):
self._command = command
self._call_back = call_back
super(Thread, self).__init__()
def run(self):
self._command()
self._call_back()
def test():
i = 20
for n in range(0,i):
#This is to keep the output at a constant speed
sleep(.5)
print n
def thread_stop():
procs = str(os.getpid())
PROCNAME = 'spam.exe'
for proc in psutil.process_iter():
if proc.name == PROCNAME:
text = str(proc)[19:]
head, sep, tail = text.partition(',')
if str(head) != procs:
subprocess.call(['taskkill', '/PID', str(head), '/F'])
这些函数由Tkinter中的GUI调用,目前还可以
如果您不想阅读所有这些内容,请直截了当地说:当Python中的线程中存在for循环时,如何以“正确的方式”停止线程?谢谢
编辑:对不起,我拉了我认为最重要的代码。相反,这里是完整的代码(这是一个文本消息,我正在使用它来学习Python,但是上面是我开始理解它之前第一次尝试线程化) 永远不要强行杀死线程。相反,使用线程定期检查的某种“信号”,如果设置了,那么线程会很好地完成 最简单的一种“信号”是一个简单的布尔变量,可以这样使用:
class MyThread(Thread):
def __init__(self):
self.continue = True
def run(self):
while (self.continue):
# Do usefull stuff here
pass
def stop(self):
self.continue = False
这里没有实际调用
test()
。请分享完整的相关代码。@Amber很抱歉,编辑了这篇文章。你必须杀死你的线程吗?你不能直接向他们发送循环退出信号吗?对不起,我是Python新手,我不需要杀死线程,我只是不知道如何让循环停止。但是,问题是,即使线程的进程被终止,循环也会继续运行。我会将代码移到run()下,并将for循环更改为一段时间吗?类对我来说非常混乱,对.self和init的基本解释也会很有帮助,谢谢。@一些程序员朋友在第三行“重写子类中的构造函数方法”中做了什么?