如何不等待线程在Python中完成

艾哈迈德

在这个问题上,他实际上问的是我想要的东西。答案是删除括号。但是,如果删除括号,则无法传递函数的参数。

我如何不等待就执行以下简单代码:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章