gpt4 book ai didi

python - 在完成之前杀死 python 中的线程

转载 作者:太空宇宙 更新时间:2023-11-03 18:54:31 24 4
gpt4 key购买 nike

我做了一点搜索,发现 python 中没有办法杀死线程,但是如何解决像我这样的问题?

我有一个函数,可以将 X 设置为 True 一小时,然后将其设置回 False。

有时程序完成时间少于所需的时间,但线程仍在运行并在内存中产生垃圾。

    def enableX():
self.x=True
sleep(3600)
self.x=False
def function1():
self.enableXThread=Thread(target=self.enableX)
self.enableXThread.start()

有什么想法吗?当程序终止时,无论线程是否完成,如何杀死 enbableXThread?

最佳答案

how I can kill enbableXThread when the program terminates

如果线程不需要执行任何清理操作,请将 enableXThread.daemon 设置为 True,使其成为守护线程。这必须在启动线程之前完成:

self.enableXThread = Thread(target=self.enableX) 
self.enableXThread.daemon = True
self.enableXThread.start()

否则,请使用退出标志(线程检查以确定是否应退出的全局变量)或事件处理程序。

您也可以考虑为此使用信号,因为这可能比线程更简单;您只需设置一个小时的闹钟,然后让处理程序重置变量即可。如果您的进程在警报响起之前结束,则不会发生任何事情。请注意,这在 Windows 上不可用。

import signal

X = False

def handle_alarm(signum, frame):
global X
X = False

signal.signal(signal.SIGALRM, handle_alarm)

def set_X_true_then_false_later(secs=3600):
global X
X = True
signal.alarm(secs)

关于python - 在完成之前杀死 python 中的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17597152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com