首页 >后端开发 >Python教程 >我什么时候应该使用 Python 未记录的'ThreadPool”进行并行处理?

我什么时候应该使用 Python 未记录的'ThreadPool”进行并行处理?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-12 17:45:15156浏览

When Should I Use Python's Undocumented `ThreadPool` for Parallel Processing?

多处理中基于线程的池

多处理模块提供了一个强大的“Pool”类,用于使用单独的进程并行化任务。然而,这种方法会因进程创建而产生开销。对于在实际函数调用期间释放 GIL 的 IO 绑定操作,使用线程可以获得更好的性能。

引入 ThreadPool 类

与普遍的看法相反,多处理模块确实提供了基于线程的池接口。这个隐藏的宝石可以通过 from multiprocessing.pool import ThreadPool 访问,提供了一种使用线程并行化任务的便捷方法。

尽管其未记录状态,ThreadPool 类使用包装 python 的虚拟 Process 类实现了多处理池接口线程。这个虚拟的 Process 类驻留在 multiprocessing.dummy 模块中,该模块提供了基于线程的完整多处理接口。

示例用法

与 ProcessPool 类似,ThreadPool 可以用于并行化映射函数:

import multiprocessing.pool

def long_running_func(p):
    c_func_no_gil(p)

p = multiprocessing.pool.ThreadPool(4)
xs = p.map(long_running_func, range(100))

注意: 在所有情况下,ThreadPool 类并不像 ProcessPool 那样高效,特别是当任务需要大量 CPU 时间时。

以上是我什么时候应该使用 Python 未记录的'ThreadPool”进行并行处理?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn