Python 3.x 如何在主线程中停止由计时器启动的线程

Python 3.x 如何在主线程中停止由计时器启动的线程,python-3.x,multithreading,Python 3.x,Multithreading,我正在尝试启动一个线程来侦听来自套接字的传入消息。所以它包含一个无限循环。但是当我试图关闭gui时,它挂在那里,并且没有关闭它。下面是不使用任何gui的更简化的代码 import threading,time,sys def f(x): while True: time.sleep(0.5) print(x) timer = threading.Timer(0.1,f,("some text",) ) timer.start() ti

我正在尝试启动一个线程来侦听来自套接字的传入消息。所以它包含一个无限循环。但是当我试图关闭gui时,它挂在那里,并且没有关闭它。下面是不使用任何gui的更简化的代码

import threading,time,sys

def f(x):
    while True:
        time.sleep(0.5)
        print(x)
timer = threading.Timer(0.1,f,("some text",) )
timer.start()
time.sleep(2)
print("time to stop")
sys.exit()
正如您看到的,行
sys.exit()
不会结束所有线程(主线程和由计时器启动的线程)。 现在我想知道如何杀死由计时器启动的特定线程。
谢谢你的帮助

我终于找到了解决办法。不知何故,我们可以使用全局变量来结束线程中的无限循环,从而关闭它

import threading,time

def f(x):
    global z
    while True:
        time.sleep(0.5)
        print(x)
        if not z:
            break
            
global z
z = True
timer = threading.Timer(0.1,f,("some text",) )
timer.start()
time.sleep(2)
print("time to stop")
z = False

使用这样的东西可能更好:而不是依赖于globals