多线程,让我死机了,求解

多线程,让我死机了,求解

部份代码省略,只有流程关键代码,加使用多线程的代码..
class mythread(threading.Thread):
    def __init__(self,moviepath):
        threading.Thread.__init__(self)
        self.moviepath=moviepath
        
    def run(self):
        self.spfile(self.moviepath)
        
    def spfile(self,filename):
        '''这个主要是把一个电影文件如rmvb格式的,剪切为一个几M的小片段,代码省略'''
        ...
        
def allfile(path):
    '''这个主要用os.walk(path)得到每个电影文件路径,代码省略
    T为一个完整的电影路径如:d:\movie\test.rmvb 线程在遍历的循环中 线程在遍历的循环中
    '''
    myth=mythread(T)
    myth.start()
'''电影目录下的电影数量不定,有可能是上百也有可能上千,实际在2003下有50部电影,
运行后,结果死机N长时间,cpu 100%'''
allfile(r'd:\moive')


看起来没什么问题啊,是不是太多了?只切割一个、两个,会死机么?
myth=mythread(T)
myth.start()
myth.join() #加上就不会死机,会行正常.

我要如何来写可以每10个线程.处理10部电影呢??

或如何才能提高速度.

加上join()后
我的程序是不是,每一个线程处理一部电影,处理完后线程结束,第二个线程才开始???
控制一下,别开太多线程应该就可以了吧。

如果 start() 一个后马上 join,然后再 start,就相当于单个线程。
我现在就是先start()再join() 在新的start()
好像就是一个单线程
我这个工作,如何才能多线程操作?
可以在mythread类中建立一个类属性,记录线程的数量。
当开启的线程数<10时,开启新的线程。


QUOTE:
原帖由 jjj137 于 2008-8-28 00:41 发表
可以在mythread类中建立一个类属性,记录线程的数量。
当开启的线程数

恩,不错。控制下。
确认一下,我咋感觉我没有用上多线程,一直是一个线程在工作呢?:em11:
你试下在程序里加一个变量,记录下线程数量

超过时退出,看是不是增加,还是只是一个线程
for n in range(10):
  myth=mythread(T)
  myth.start()
  myth.join()