|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
如题。
这个问题其实困扰了我很久,以前想要在程序终止时停止线程使用的是 atexit.register(stopThreads);但这不起作用。
我试了各种方法,比如说 win32api 之类的……
但令我崩溃的是,网上搜到的(我用的 Bing)大部分居然是 AI 的内容。csdn,简书,geekdocks,到处都是 ai 的殖民地。
最接近成功的方法是定义一个变量,线程里不断检测它。但新的问题也来了……
如果线程是 socket.socket().accept / recv 这样别人写的代码呢?我怎么不断检测这个变量?
现在,我知道了:使用 DAEMON THREAD(守护线程)。
具体来说,在定义线程时指定 keyword-argument daemon 为 True,所有这样的线程都会在主线程退出时自动关闭。
我们可以简单封装一下这个功能。
- class Thread(threading.Thread):
- def __init__(self, target, args=(), kwargs=None):
- super().__init__(target=target, args=args, kwargs=kwargs, daemon=True)
复制代码
使用线程时,只需要 Thread(threadFunc, (1, 1, 4, 5, 1, 4), {'ikun': True}).start() 就行了。 |
|