当前位置: 首页 > 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

相关文章:

  • 锂电池升压到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语言
  • 【算法系列】基数排序
  • 上海浦江游览南拓新航线首航,途经前滩、世博文化公园等景点
  • 被央视曝光“废旧厂区沦为垃圾山”,江西萍乡成立调查组查处
  • 浦江潮涌征帆劲,上海以高质量发展服务全国发展大局
  • “80后”北大硕士罗婕履新甘肃宁县县委常委、组织部部长
  • 回家了!子弹库帛书二、三卷将于7月首次面向公众展出
  • 人民网:激发博物馆创新活力,让“过去”拥有“未来”