Skip to main content
 首页 » 编程设计

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

2025年05月04日20over140

在此question ,他居然问了我想要的东西。除了答案是删除括号。但是,如果我删除括号,那么我将无法为我的函数传递参数。

如何在不等待的情况下执行以下简单代码:

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 

全部同时打印

请您参考如下方法:

From the documentation , target 应该是可调用的:

target is the callable object to be invoked by the run() method

您没有将函数传递给 target,您传递的是函数的返回值,因此函数会在您将其传递给 threading.Thread 时立即运行,而不是在您调用 t.start() 时。

您应该使用 args 参数来为您的可调用对象指定参数。

只需更改这一行:

 t = threading.Thread(target=whatever(i)) 

到

t = threading.Thread(target=whatever, args=(i,))