当前位置: 首页 > news >正文

使用joblib 多线程/多进程

文章目录

  • 1. Joblib 并行计算的两种模式
    • 多进程(Multiprocessing,适用于 CPU 密集型任务)
    • 多线程(Multithreading,适用于 I/O 密集型任务)
  • 2. Joblib 的基本用法
  • 3. Joblib 多进程示例(适用于 CPU 密集型任务)
    • 示例:计算平方
  • 4. Joblib 多线程示例(适用于 I/O 密集型任务)
    • 示例:爬取网页
  • 5. 选择合适的并行模式
  • 6. 使用 parallel_backend 控制后端
  • 7. parallel_backend 与 Parallel 直接指定 backend 的区别
      • 区别

joblib 是一个 Python 库,用于高效的并行计算和缓存。它支持 多进程(multiprocessing) 和 多线程(multithreading),主要用于加速 CPU 密集型和 I/O 密集型任务。

1. Joblib 并行计算的两种模式

多进程(Multiprocessing,适用于 CPU 密集型任务)

每个任务在单独的进程中执行,避免 GIL(全局解释器锁)限制。
适用于 数值计算、矩阵运算、图像处理等 CPU 密集型任务。
后端:multiprocessing 或 loky(默认)。

多线程(Multithreading,适用于 I/O 密集型任务)

线程共享同一个进程,适用于 文件 I/O、网络请求、数据库查询等任务。
由于 Python 的 GIL,不适用于 CPU 密集型任务。
后端:threading。

2. Joblib 的基本用法

joblib 的并行计算主要通过 Parallel 和 delayed 来实现:

from joblib import Parallel, delayed

results = Parallel(n_jobs=4)(delayed(func)(x) for x in iterable)

n_jobs=4:使用 4 个线程或进程并行计算。
delayed(func)(x):将 func(x) 延迟执行,供 Parallel 并行调度。

3. Joblib 多进程示例(适用于 CPU 密集型任务)

示例:计算平方

import time
http://www.dtcms.com/a/54015.html

相关文章:

  • 锂电池升压到5V并且可以锂电池充电的芯片SM5401
  • K8S学习之基础十六:k8s中Deployment更新策略
  • AUTOSAR—TM模块介绍及使用概要
  • 深入剖析 Kubernetes 弹性伸缩:HPA 与 Metrics Server
  • 文件解析:doc、docx、pdf
  • 开发环境搭建-06.后端环境搭建-前后端联调-Nginx反向代理和负载均衡概念
  • RAG了解与实践
  • QEMU源码全解析 —— 块设备虚拟化(1)
  • MySQL root用户密码忘记怎么办(Reset root account password)
  • Java面经
  • 字节跳动AI原生编程工具Trae和百度“三大开发神器”AgentBuilder、AppBuilder、ModelBuilder的区别是?
  • 蓝桥试题:传球游戏(二维dp)
  • 基于海思soc的智能产品开发(芯片sdk和linux开发关系)
  • unity console日志双击响应事件扩展
  • C#核心(21)万物之父Object中的方法
  • Lambda表达式使用介绍
  • 【Bootstrap5】Bootstrap5学习笔记
  • 数据库复习(第五版)- 第七章 数据库设计
  • 3.6c语言
  • 【算法系列】基数排序
  • 维度建模事实表技术基础解析(以电商场景为例)
  • 洛谷 P1480 A/B Problem(高精度详解)c++
  • 相机几何与标定:从三维世界到二维图像的映射
  • 【LeetCode101】对称二叉树
  • 逐梦DBA:MySQL的编码设置
  • PWM子系统芯片驱动源码pwm-tegra.c分析
  • leetcode15 三数之和
  • ruoyi框架接入kkFileView
  • 侯捷 C++ 课程学习笔记:深入理解C++内存管理与类对象构造全过程
  • 【极客时间】浏览器工作原理与实践-2 宏观视角下的浏览器 (6讲) - 2.6 渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?