同时运行多个线程

时间:2017-02-19 21:21:39

标签: python multithreading

所以我的目标是让do_something()函数启动它自己的线程,以便do_something()可以并行运行,而不必等待前一个完成。问题是它似乎不是多线程(意味着一个线程在另一个线程开始之前完成)。

for i in range(len(array_of_letters)):

    if i == "a":
        t = threading.Thread(target=do_something())

        print "new thread started : %s"%(str(threading.current_thread().ident))     
        t.start()

我在current_thread().ident函数内部也有do_something(),但似乎启动的线程的标识与运行python脚本的主线程相同。我认为我的方法不正确。

1 个答案:

答案 0 :(得分:3)

这是一种常见且易于误解的错误。

target=do_something()只是在主线程中立即执行你的函数,并将None(我假设你的函数的返回值)作为target函数传递给线程,这不会触发任何明显的错误;但也没有做任何事情。

你必须传递实际功能而不是结果:

t = threading.Thread(target=do_something)

会更好用