在Python中,使用concurrent.futures.ThreadPoolExecutor
可以轻松地将参数传递给线程池中的任务
import concurrent.futures
import time
def my_function(a, b):
print(f"Thread {a} - {b}")
time.sleep(2)
return a + b
def main():
with concurrent.futures.ThreadPoolExecutor() as executor:
# 创建一个列表来保存futures
futures = []
# 将参数传递给my_function
for i in range(5):
future = executor.submit(my_function, i, i * 2)
futures.append(future)
# 获取结果
for future in concurrent.futures.as_completed(futures):
result = future.result()
print(f"Result: {result}")
if __name__ == "__main__":
main()
在这个示例中,我们定义了一个名为my_function
的函数,该函数接受两个参数a
和b
。然后,我们创建一个ThreadPoolExecutor
实例,并使用executor.submit()
方法将任务提交给线程池。submit()
方法接受一个函数以及该函数所需的参数,它将返回一个concurrent.futures.Future
对象。我们可以将这些Future
对象添加到一个列表中,然后在稍后的时间使用as_completed()
函数迭代它们以获取结果。
注意:在这个示例中,我们没有使用with
语句来创建ThreadPoolExecutor
实例。在实际项目中,推荐使用with
语句,因为它可以确保在代码块执行完毕后正确关闭线程池。
领取专属 10元无门槛券
手把手带您无忧上云