所以我的目标是让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脚本的主线程相同。我认为我的方法不正确。
答案 0 :(得分:3)
这是一种常见且易于误解的错误。
target=do_something()
只是在主线程中立即执行你的函数,并将None
(我假设你的函数的返回值)作为target
函数传递给线程,这不会触发任何明显的错误;但也没有做任何事情。
你必须传递实际功能而不是结果:
t = threading.Thread(target=do_something)
会更好用