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

【jupyter 使用多进程方案】

可选择的方案:

  1. pathos.multiprocessing
  2. joblib.Parallel

来写的 Jupyter Notebook 兼容版本 示例。


✅ 方法一:使用 pathos.multiprocessing(Jupyter友好)

from pathos.multiprocessing import ProcessingPool as Pool
from tqdm import tqdmdef process_image(img_path, output_path):# 你的图像处理逻辑,比如保存图像到 output_path# 示例代码如下(请根据你实际处理内容修改):from PIL import Imageimg = Image.open(img_path)img.save(output_path)return output_path# 构造参数列表(每个是一个元组)
args = [(img_path, output_path / img_path.name) for img_path in img_paths]# 初始化 Pool 并并行处理
pool = Pool()  # 默认使用 CPU 核心数# tqdm 不支持 map 直接用,写成 list
results = list(tqdm(pool.uimap(lambda args: process_image(*args), args), total=len(args)))

🔑 特点:

  • 支持在 Jupyter 中直接运行;
  • 不需要 if __name__ == "__main__"
  • 支持传多个参数(通过 *args 拆包);
  • 使用 uimap() 可以有 tqdm 进度条(imap 带顺序,map 会等全部完成)。

✅ 方法二:使用 joblib.Parallel(适合CPU密集,稳定)

from joblib import Parallel, delayed
from tqdm import tqdmdef process_image(img_path, output_path):from PIL import Imageimg = Image.open(img_path)img.save(output_path)return output_path# tqdm 进度条用在参数上
results = Parallel(n_jobs=-1)(delayed(process_image)(img_path, output_path / img_path.name)for img_path in tqdm(img_paths)
)

🔑 特点:

  • n_jobs=-1 表示使用所有可用核心;
  • 同样支持多个参数;
  • 在 Jupyter 运行稳定,依赖 loky 后端;
  • 避免了 pickle 报错。

📦 安装依赖

如果你没有安装 pathosjoblib

pip install pathos joblib

✅ 总结对比

特性pathosjoblib
Jupyter兼容
多参数传递✅(tuple 拆包)✅(delayed(f)(...)
支持 tqdm✅(配合 uimap✅(在 for 循环外)
稳定性/文档支持中(社区较活跃)高(广泛用于 sklearn 等)
推荐使用场景函数自由写、调试方便大批量 CPU 密集任务
http://www.dtcms.com/a/295480.html

相关文章:

  • 使用爬虫获取游戏的iframe地址
  • SSL 证书与 HTTPS 的关系:一文理清核心关联
  • 顶级水体视效一键添加~地表中的水体设置
  • OpenCV计算机视觉实战(17)——特征点检测详解
  • 基于python django的农业可视化系统,以奶牛牧场为例
  • 3D Semantic Occupancy Prediction
  • 行业热点丨SimLab解决方案如何高效应对3D IC多物理场与ECAD建模挑战?
  • Redis学习:持久化与事务(Transaction)
  • Three.js 光照系统详解:打造真实的 3D 光影世界
  • Django Models详解:数据库模型的核心
  • HOOPS Communicator详解:基于WebGL的3D Web可视化引擎架构与核心模块
  • 【OpenCV篇】OpenCV——03day.图像预处理(2)
  • 阿里视频直播解决方案VS(MediaMTX + WebRTC) 流媒体解决方案
  • 2025年区块链安全威胁全景:新兴漏洞、攻击向量与防护策略深度解析
  • TimeXer - 重新审视时序预测内的外生变量
  • 算法题(179):单调栈
  • 接口多态之我的误解
  • C# system.diagnostics.debug.writeline 不在输出窗口显示
  • Java学习第七十二部分——Zookeeper
  • 适配器模式——以springboot为例
  • RustDesk 完整部署教程:支持 Web 管理后台和网页客户端远程,保姆级教学来了!
  • 【SpringAI实战】提示词工程实现哄哄模拟器
  • Mybatis_2
  • 5.1 神经元、神经网络的理解
  • AI大模型各类概念扫盲
  • 鸿蒙平台运行Lua脚本
  • easyexcel流式导出
  • 100元以下的儿童益智玩具推荐
  • 达梦数据库集群启停顺序全解析
  • GitHub开源项目Zerox:AI驱动的OCR革命