我在自学 python 多线程的时候,遇到一个很莫名其妙的问题。大家请看代码


from threading import Thread
import time


class MyThread(Thread):

    def run(self):
        print ' I am a thread.'


def bar():
    for i in xrange(5):
        time.sleep(1)
        print i


t1 = MyThread(target=bar)
t1.start()

结果:

I am a thread.

我凑,bar 没有执行。。。。
我也知道问题在哪,是因为 MyThread 里面的 run,子类没法调用 Thread 里面的 run。但是,我用了一个在 bar 后面,加了一个(),就能运行 bar(),哪位大神能解答一下。。。代买如下。


from threading import Thread
import time


class MyThread(Thread):

    def run(self):
        print ' I am a thread.'


def bar():
    for i in xrange(5):
        time.sleep(1)
        print i


t1 = MyThread(target=bar())  #主要区别就在加了一个().....
t1.start()

结果:

0
1
2
3
4
  I am a thread.

这个神奇的 ()....


↙↙↙阅读原文可查看相关链接,并与作者交流