[求助]帮忙debug一下我的多线程程序

[求助]帮忙debug一下我的多线程程序

class ListenThread(threading.Thread):
    def __init__(self,server):
        threading.Thread.__init__(self)
        self.server = server
    def run(self):
        while 1:
            self.client, addr = self.server.accept()
            data = self.client.recv(1024)
            file = os.open(data, os.O_WRONLY|os.O_CREAT|os.O_EXCL)
            while 1:
                rdata = self.client.recv(1024)
                if not rdata:
                    break
                os.write(file, rdata)
            os.close(file)
            self.client.close()

上面是一个子线程的类,下面是主线程中的一段代码,在执行过程中,print 'ListenThread start !!!'可以正常显示出来,可是当执行完run方法后应该要显示print 'ListenThread finished !!!',却一直没有显示,程序貌似一直在等待,ctrl-c中断程序后,经md5验证文件传输却是正常的,本程序是一个简单的文件传输程序,c/s模式,贴出来的代码都是server端的

        self.LT = ListenThread(server)
        self.LT.setDaemon(True)
        print 'ListenThread start !!!'
        self.LT.run()
        print 'ListenThread finished !!!'
请教一下问题出在哪里,应该是文件传输完了以后,程序就正常退出
外层循环啥时候退出?
这些代码我是按照书上的例子经过修改后得来的
按照书上代码的思想是不退出循环,所以用了一个线程来循环监听
在主线程中的socket实例,用listen(1)来实现对一个请求的处理
启动线程是不是要用LT.start()啊??
主线程是不是执行完print 'ListenThread finished !!!'  就退出了?是的话应该要等调度到才行吧?
另外这样写如果文件没有传完主线程就被调用退出了咋办?
谢谢楼上兄弟
昨晚看另外一份关于python多线程编程的资料时才理解要用start(),之前还以为是书上的错误呢
今天在重新改改,希望没有问题吧