在这个问题上,他实际上问的是我想要的东西。答案是删除括号。但是,如果删除括号,则无法传递函数的参数。
我如何不等待就执行以下简单代码:
from time import sleep
import threading
def whatever(i):
sleep(5)
print("Hey! It's me number " + str(i))
for i in range(3):
t = threading.Thread(target=whatever(i))
t.start()
所需的输出将是
Hey! It's me number 0
Hey! It's me number 1
Hey! It's me number 2
全部同时打印
从文档开始,target
应该可以调用:
target是run()方法要调用的可调用对象
您没有将函数传递给您,而是将函数target
的返回值传递给了您,因此该函数只要将其传递给您就可以运行threading.Thread
,而不是在您调用时运行t.start()
。
您应该使用args
参数来指定可调用对象的参数。
只需更改此行:
t = threading.Thread(target=whatever(i))
至
t = threading.Thread(target=whatever, args=(i,))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句