Python3 线程组合 .start() 不会创建 join 属性

Far*_*rth 2 python python-multithreading python-3.x

这工作正常:

def myfunc():
    print('inside myfunc')

t = threading.Thread(target=myfunc)
t.start()
t.join()
print('done')
Run Code Online (Sandbox Code Playgroud)

然而,这显然是正确创建和执行线程的:

def myfunc():
    print('inside myfunc')

t = threading.Thread(target=myfunc).start()
t.join()
print('done')
Run Code Online (Sandbox Code Playgroud)

当它命中 join() 时生成以下致命错误:

AttributeError: 'NoneType' 对象没有属性 'join'

我会认为这些陈述是等效的。有什么不同吗?

小智 7

t = threading.Thread(target=myfunc).start()
Run Code Online (Sandbox Code Playgroud)

threading.Thread(target=myfunc) 返回一个线程对象,但是 object.start() 返回 None。这就是为什么会出现 AttributeError 的原因。