欢迎访问宙启技术站
智能推送

使用concurrent.futures.threadThreadPoolExecutor()实现多线程计算密集型任务

发布时间:2023-12-15 05:54:40

concurrent.futures是Python标准库中的一个模块,提供了用于并发执行任务的高级接口。其中的ThreadPoolExecutor类可以用于创建一个线程池,并在其中执行多个线程。

下面是一个使用concurrent.futures.ThreadPoolExecutor()实现多线程计算密集型任务的示例:

import concurrent.futures

def compute_square(num):
    result = num * num
    return result

def main():
    # 创建一个包含5个线程的线程池
    with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
        # 提交计算任务并获取Future对象
        futures = [executor.submit(compute_square, i) for i in range(1, 10)]

        # 获取计算结果
        results = [future.result() for future in futures]

    # 打印结果
    print(results)

if __name__ == "__main__":
    main()

在上述示例中,我们定义了一个计算平方的函数compute_square(num),它接收一个数作为参数并返回该数的平方。然后,在main()函数中,我们使用ThreadPoolExecutor()创建了一个包含5个线程的线程池。

通过executor.submit()方法,我们将计算任务提交给线程池,并获取了一个Future对象列表。每个Future对象表示一个计算任务的执行状态。

在等待所有计算任务完成后,我们通过迭代Future对象列表,并调用.result()方法获取计算结果。最后,我们将结果打印出来。

使用concurrent.futures.ThreadPoolExecutor()可以很方便地实现多线程的计算密集型任务。线程池可以自动管理线程的数量,并且通过Future对象可以轻松地获取计算结果。通过合理设置线程池的大小,可以充分利用多核处理器的并行计算能力,提高程序的执行效率。