如何停止python中线程执行的类的无限循环?

如何停止python中线程执行的类的无限循环?,python,multithreading,class,infinite-loop,blockly,Python,Multithreading,Class,Infinite Loop,Blockly,我有一些字符串格式的python代码(Blockly的输出),我用它们来实例自定义类。然后它们在线程中并发执行。这是一个简单的代码示例: import threading from time import sleep class myFunction(object): def __init__(self, code): self._code = code self._stoprequest = False def start(self):

我有一些字符串格式的python代码(Blockly的输出),我用它们来实例自定义类。然后它们在线程中并发执行。这是一个简单的代码示例:

import threading
from time import sleep

class myFunction(object):
    def __init__(self, code):
        self._code = code
        self._stoprequest = False

    def start(self):
        while not self._stoprequest:
            exec code
            sleep(1)

    def stop(self):
        self._stoprequest = True

    ''' other functions '''

threads = []

f1 = myFunction("print 'hello'")
f2 = myFunction("var=0\nwhile True:\n  print var\n  var=var+1")
f3 = myFunction("sleep(3600)")
functions=[(f1,'f1'),(f2,'f2'),(f3,'f3')]

for function in functions:
    t = threading.Thread(target = function[0].start(), name=function[1])
    threads.append(t)
    t.start()

sleep(5)

functions[0][0].stop()
functions[1][0].stop()
functions[2][0].stop()
对于函数“f1”,由于执行的代码不是无限循环,所以我的实现是有效的

但功能“f2”和“f3”不起作用(“f3”将在睡眠后结束)

寻找我发现的答案,这可能适用于“睡眠”,但不适用于无限循环


有没有办法结束任何类型代码的执行?我不介意它是终止线程还是捕获异常。

为什么需要阻止它们?他们是否阻止您的程序退出?如果是这样,请将后台线程设置为deamons。这不是守护进程问题。我想要的是在任何时候管理所有代码,主要是启动和停止。