温馨提示×

Python多线程编程怎样利用线程池

小樊
82
2024-11-09 14:48:48
栏目: 编程语言

在Python中,可以使用concurrent.futures模块中的ThreadPoolExecutor类来创建和管理线程池。线程池可以帮助你更有效地利用系统资源,避免因为创建过多线程而导致的性能问题。

下面是一个简单的示例,展示了如何使用ThreadPoolExecutor来执行多个任务:

import concurrent.futures
import time

def task(n):
    print(f"Task {n} started")
    time.sleep(n)  # 模拟任务执行时间
    print(f"Task {n} completed")
    return n * n

def main():
    # 创建一个线程池,最多可以同时运行3个线程
    with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
        # 提交任务到线程池
        tasks = [executor.submit(task, i) for i in range(1, 6)]

        # 获取任务结果
        for future in concurrent.futures.as_completed(tasks):
            result = future.result()
            print(f"Task result: {result}")

if __name__ == "__main__":
    main()

在这个示例中,我们定义了一个名为task的函数,它接受一个参数n,模拟执行一个耗时n秒的任务。在main函数中,我们创建了一个最大工作线程数为3的线程池,然后提交了5个任务到线程池。线程池会自动分配任务给空闲的线程,并在任务完成后返回结果。

注意,with语句用于确保线程池在执行完毕后正确关闭。这是一个很好的实践,可以避免因为忘记关闭线程池而导致的资源泄漏问题。

0