Python线程无法按预期工作

时间:2012-02-13 12:03:55

标签: python multithreading

好吧,我写了一个试图知道如何使用python线程的snappet。 但奇怪的是,以下代码在没有预期输出的情况下快速退出。 是因为我不应该通过覆盖run()方法来生成线程吗?

import threading
from time import sleep
class mythread(threading.Thread):
    def __init__(self,target=None,thread_num=5):
        threading.Thread.__init__(self,target=None)
        self.thn = thread_num

    def run(self):
        for i in range(self.thn):
            t = threading.Thread(target=self.myfunc)
            t.start()
            t.join()
        myfunc(self.thn)

    def myfunc(num):
        print num,'\tI am doing sth.'
        sleep(0.5)
        print num,'\tI have done it.'

mythread()

2 个答案:

答案 0 :(得分:5)

您需要启动该线程以使其实际执行某些操作:

t = mythread()
t.start()

如果您懒得在构造函数中接受target参数(为什么?),则不应忽略此参数。也许你想把它传递给Thread构造函数。 (为什么?)

答案 1 :(得分:1)

当您编写mythread()时,您实例化该对象。将调用默认构造函数,因此将执行__init__()

你的构造函数没有启动线程的任何指令。