我正在使用以下模板来重新创建我需要运行到无限的线程。 我想知道这个模板在内存方面是否可扩展。线程被正确销毁了吗?
import threading
import time
class aLazyThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
time.sleep(10)
print "I don not want to work :("
class aWorkerThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
time.sleep(1)
print "I want to work!!!!!!!"
threadA = aLazyThread()
threadA.start()
threadB = aWorkerThread()
threadB.start()
while True:
if not (threadA.isAlive()):
threadA = aLazyThread()
threadA.start()
if not (threadB.isAlive()):
threadB = aWorkerThread()
threadB.start()
困扰我的是以下显示调试信息的eclipse中的图片,似乎线程正在堆叠它。
答案 0 :(得分:1)
我觉得图像没什么问题。主线程和你创建的2个线程(根据代码,3个线程应该随时运行)
与任何其他 Python 对象一样,线程在不使用时会被垃圾收集;例如在你的main while循环中,当你实例化类时(让我们说aLazyThread
),旧的threadA
值被破坏(可能不是那个时候,但不久之后)
主要的while循环,也可以使用 sleep (例如time.sleep(1)
),否则它将消耗处理器,无用地检查其他线程是否正在运行。