📜  如何在 Python3 中使用 ThreadPoolExecutor ?(1)

📅  最后修改于: 2023-12-03 14:52:31.411000             🧑  作者: Mango

如何在 Python3 中使用 ThreadPoolExecutor?

ThreadPoolExecutor是Python3中concurrent.futures模块中的类,它允许开发者使用线程池来执行并发任务,可以显著提高代码的执行效率。

步骤

要使用ThreadPoolExecutor类,需要遵循以下步骤:

  1. 导入concurrent.futures模块中ThreadPoolExecutor类:
from concurrent.futures import ThreadPoolExecutor
  1. 创建一个ThreadPoolExecutor实例:
with ThreadPoolExecutor(max_workers = num_threads) as executor:

其中max_workers参数是最大线程数,也就是线程池中可以使用的最大线程数量。

  1. 向线程池中提交任务:
future = executor.submit(function, arg1, arg2, ...)

其中function是要执行的函数名称,arg1, arg2, ...是函数接受的参数。

  1. 等待任务执行完成:
result = future.result()
例子
from concurrent.futures import ThreadPoolExecutor

def power(x, n):
    return x ** n

if __name__ == '__main__':
    with ThreadPoolExecutor(max_workers=4) as executor:
        future1 = executor.submit(power, 2, 3)
        future2 = executor.submit(power, 3, 3)
        future3 = executor.submit(power, 4, 3)
        future4 = executor.submit(power, 5, 3)

        print(future1.result())   # 8
        print(future2.result())   # 27
        print(future3.result())   # 64
        print(future4.result())   # 125

在此示例中,我们创建了一个含有四个线程的线程池,然后向线程池中提交了四个任务。最后我们输出每个任务的结果,完成power()函数中的输入值的立方计算。

注意:在创建线程池时,您可以设置最大线程池的大小。通常,最大线程池大小应该与CPU的核心数成比例。不过从代码方面考虑,建议不要设置过多的线程,因为过多的线程会导致锁竞争和上下文切换,从而降低执行效率。