from concurrent.futures import ThreadPoolExecutor
import time
# 定义一个简单的任务函数
def task(n):
print(f"Task {n} is starting")
time.sleep(2) # 模拟耗时操作
print(f"Task {n} is completed")
return f"Result of task {n}"
# 使用线程池执行任务
def use_thread_pool():
# 创建一个线程池,最多支持3个线程并发执行
with ThreadPoolExecutor(max_workers=3) as executor:
# 提交多个任务到线程池
futures = [executor.submit(task, i) for i in range(5)]
# 获取任务的执行结果
for future in futures:
result = future.result() # 等待任务完成并获取结果
print(result)
if __name__ == "__main__":
use_thread_pool()
ThreadPoolExecutor:这是 concurrent.futures 模块中的一个类,用于管理线程池。通过它,我们可以方便地创建和管理多个线程。
task 函数:这是一个模拟的任务函数,它会打印任务开始和结束的信息,并且通过 time.sleep(2) 模拟一个耗时操作。
use_thread_pool 函数:这个函数展示了如何使用线程池来执行多个任务。我们创建了一个最大支持3个线程的线程池,并提交了5个任务给线程池。每个任务都会被分配给一个线程去执行。
future.result():当我们调用 future.result() 时,程序会等待该任务完成并返回结果。如果任务抛出异常,result() 方法也会抛出相同的异常。
with 语句:使用 with 语句来管理线程池的好处是,当代码块结束时,线程池会自动关闭,确保所有资源都被正确释放。
通过这种方式,我们可以高效地管理和调度多个线程来处理并发任务。
上一篇:python 多进程
下一篇:python threading
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站