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

使用multiprocessing.pool模块实现多线程并发编程

发布时间:2023-12-31 17:52:53

multiprocessing.pool模块是Python中用于实现多线程并发编程的模块。它提供了一个Pool类,可以创建一个线程池,用于执行多个任务,并可以控制并发线程的数量。

Pool类的常用方法有:

- apply(func, args):同步执行单个任务,并返回结果。

- map(func, iterable):同步执行多个任务,返回结果列表。

- apply_async(func, args, callback=None):异步执行单个任务,并可以设置回调函数。

- map_async(func, iterable, callback=None):异步执行多个任务,并可以设置回调函数。

下面通过一个使用例子来说明multiprocessing.pool的使用。

import multiprocessing

# 定义一个任务函数
def do_task(x):
    return x * x

# 创建一个线程池,设置并发线程数为3
pool = multiprocessing.Pool(processes=3)

# 使用apply_async方法异步执行多个任务,并设置回调函数
results = []
for i in range(1, 11):
    result = pool.apply_async(do_task, (i,), callback=results.append)

# 等待所有任务执行完毕
pool.close()
pool.join()

# 输出执行结果
print(results)

上述代码中,首先定义了一个任务函数do_task(x),用于计算传入数值的平方。然后创建了一个含有3个并发线程的线程池。接下来使用apply_async方法异步执行了10个任务,并设置了回调函数为results.append,用于将每个任务的结果添加到results列表中。最后等待所有任务执行完毕,并输出执行结果。

需要注意的是,使用multiprocessing.pool模块时,任务函数以及传入的参数必须可序列化,因为需要将任务函数和参数通过进程间通信传递给子进程。

总结起来,使用multiprocessing.pool模块可以方便地实现多线程并发编程,提高程序的执行效率。