Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:保存对线程子类的引用_Python_Multithreading - Fatal编程技术网

Python:保存对线程子类的引用

Python:保存对线程子类的引用,python,multithreading,Python,Multithreading,我有一个子类threading.Thread。实例化后,它将永远在后台运行 class MyThread(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.daemon = True self.start() def run(self): while True: <do somethi

我有一个子类threading.Thread。实例化后,它将永远在后台运行

class MyThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.daemon = True
        self.start()

    def run(self):
        while True:
            <do something>
如果我以后再也不需要访问线程,我一直想知道是否可以用

    MyThread()

i、 例如,在不持有引用的情况下实例化它。线程最终是否会被垃圾回收,因为没有引用保存它?

这无关紧要。。。您可以使用del self.my_线程轻松地对其进行测试,您应该会看到该线程继续运行,即使您删除了唯一的引用并强制垃圾收集。。。也就是说,保存一个引用通常是一个好主意,这样您就可以为另一个线程设置标志和其他内容,尽管共享内存可能足够了

删除该引用后该线程将继续运行似乎是真的,但我不明白,如果该引用确实是最后一个引用,那么为什么不释放该实例。即使运行gc.collect也不会停止线程。据我所知,当对象的引用计数达到0时,对象将被释放。在我看来,一定还有什么东西在引用这个实例。我想知道它是什么,我是否可以指望它会持续。。。直到他们离开。。。afaik即使你关闭了产生线程的程序,线程也会继续运行,可能我把它和多处理混淆了。。。答案是肯定的,你可以依靠线程的持久性,但是正如我提到的,保留一个引用很可能是一个好主意,它将在以后为你省去痛苦。。。
    MyThread()