在python中重新创建线程

时间:2015-04-14 20:39:08

标签: multithreading python-2.7

我正在使用以下模板来重新创建我需要运行到无限的线程。 我想知道这个模板在内存方面是否可扩展。线程被正确销毁了吗?

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中的图片,似乎线程正在堆叠它。

Thread counts

1 个答案:

答案 0 :(得分:1)

  1. 我觉得图像没什么问题。主线程和你创建的2个线程(根据代码,3个线程应该随时运行)

  2. 与任何其他 Python 对象一样,线程在不使用时会被垃圾收集;例如在你的main while循环中,当你实例化类时(让我们说aLazyThread),旧的threadA值被破坏(可能不是那个时候,但不久之后)

  3. 主要的while循环,也可以使用 sleep (例如time.sleep(1)),否则它将消耗处理器,无用地检查其他线程是否正在运行。