Python 并行加速技巧分享

news2024/10/2 10:24:39

文章目录

  • 一、 使用joblib进行并行计算
    • 二、使用Parallel与delayed进行并行加速

一、 使用joblib进行并行计算

作为一个被广泛使用的第三方Python库(譬如scikit-learn项框架中就大量使用joblib进行众多机器学习算法的并行加速),我们可以使用pip install joblib对其进行安装,安装完成后,下面我们来学习一下joblib中有关并行运算的常用方法:

二、使用Parallel与delayed进行并行加速

joblib中实现并行计算只需要使用到其Parallel和delayed方法即可,使用起来非常简单方便

下面我们直接以一个小例子来演示:

joblib实现并行运算的思想是将一组通过循环产生的串行计算子任务,以多进程或多线程的方式进行调度,而我们针对自定义的运算任务需要做的仅仅是将它们封装为函数的形式即可,譬如:

import time
def task_demo1():
    time.sleep(1)
    return time.time()

接着只需要像下面的形式一样,为Parallel()设置相关参数后,衔接循环创建子任务的列表推导过程,其中利用delayed()包裹自定义任务函数,再衔接()传递任务函数所需的参数即可,其中n_jobs参数用于设置并行任务同时执行的worker数量,因此在这个例子中可以看到进度条是按照4个一组递增的,

可以看到最终时间开销也达到了并行加速效果:
在这里插入图片描述
其中可以根据计算任务以及机器CPU核心数具体情况为Parallel()调节参数,核心参数有:

  • backend:用于设置并行方式,其中多进程方式有’loky’(更稳定)和’multiprocessing’两种可选项,多线程有’threading’一种选项。默认为’loky’
  • n_jobs:用于设置并行任务同时执行的worker数量,当并行方式为多进程时,n_jobs最多可设置为机器CPU逻辑核心数量,超出亦等价于开启全部核心,你也可以设置为-1来快捷开启全部逻辑核心,若你不希望全部CPU资源均被并行任务占用,则可以设置更小的负数来保留适当的空闲核心,譬如设置为-2则开启全部核心-1个核心,设置为-3则开启全部核心-2个核心

譬如下面的例子,在我这台逻辑核心数为8的机器上,保留两个核心进行并行计算:
在这里插入图片描述

关于并行方式的选择上,由于Python中多线程时全局解释器锁的限制,如果你的任务是计算密集型,则推荐使用默认的多进程方式加速,如果你的任务是IO密集型譬如文件读写、网络请求等,则多线程是更好的方式且可以将n_jobs设置的很大,举个简单的例子,可以看到,通过多线程并行,我们在5秒的时间里完成了1000次请求,远快于单线程17秒请求100次的成绩
在这里插入图片描述
我们可以根据自己实际任务的不同,好好利用joblib来加速你的日常工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/127734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【十天成为红帽工程师】第八天 学习编写playbook

目录 一、playbook编写要素 二、playbook编写前的准备 三、实验要求操作 一、playbook编写要素 (一)playbook位置可这样写:/ansible/chap1/play1.yml 文件后缀为.yml,以yaml格式编写的文本文件 文档开头标记--- 文档结束标…

加解密与HTTPS(2)

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~ 近些天由于完全放开,我也从“杨过”变成了“杨康”,加之家中亲人故去,所以长久未能更新,特此致歉~ 上…

利用python实现热力学地图(保姆式讲解)

一、首先展示最终的效果 对二手房房源的分析,将分析后的结果用热力图显示: 显示效果如下所示&#xff1a; heatMap参考代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <!DOCTYPE html> <head><meta http-equiv&q…

一起看跨年烟花(流行背景音乐+雪花)---- 系列

2023年快要到来啦&#xff0c;很高兴这次我们又能一起度过~ 目录 一、前言 二、跨年烟花 三、效果展示 四、详细介绍 五、编码实现 index.html js 六、获取代码 需要源码&#xff0c;可以私信我(⊙o⊙)&#xff1f;关注我&#xff1f; 一、前言 时光荏苒&#xff0c;白…

数据结构-树

1、树的分类 &#xff08;1&#xff09;满二叉树 一个二叉树&#xff0c;如果每一个层的结点数都达到最大值&#xff0c;则这个二叉树就是满二叉树。也就是说&#xff0c;如果一个二叉树的层数为K&#xff0c;且结点总数是(2^k)-1&#xff0c;则它就是满二叉树。 &#xff08;2…

ThingsKit物联网平台 v1.0.1-Release版本发布

基于ThingsBoard二次开发的物联网平台推荐&#xff1a;ThingsKit物联网平台&#xff0c;开箱即用的物联网低代码平台&#xff0c;提供N1N的产品服务体系&#xff0c;帮助企业快速搭建稳定可靠的物联网系统平台&#xff0c;为企业节省大量时间及人力成本。www.thingskit.com Th…

centos7安装k3s和rancher

文章目录一. 安装k3s1.1 关闭防火墙1.2 修改hostname1.3 安装containerd1.4 containerd安装mysql81.5 安装k3s1.6 卸载k3s二. 安装rancher2.1 安装helm2.1.1 下载2.1.2 安装2.1.3 添加几个repo2.1.4 报错2.2 helm安装ingress-nginx2.3 添加rancher repo2.4 helm安装rancher(自己…

读论文---Clip微调---CLIP Itself is a Strong Fine-tuner

标题 摘要 Recent studies have shown that CLIP has achieved remarkable success in performing zero-shot inference while its fine-tuning performance is not satisfactory. In this paper, we identify that fine-tuning performance is significantly impacted by hyp…

复杂并发场景下的并发调度模型在转转的演进之路

文章目录一、问题背景二、复杂并发场景释义2.1 简单并发场景2.2 复杂并发场景三、分组并发调度模型演进3.1 简单异步并发调度3.2 分组并发调度四、自驱动并发调度模型演进4.1 一个优化耗时的小目标及其实现4.2 下一步的疑惑4.3 对问题的重新思考以及自驱动并发调度模型的诞生4.…

蓝桥集训(附加面试题)第八天

本文来源于算法面试题特训专栏&#xff0c;这里有大量专业性的算法题比如&#xff08;动态规划21天&#xff0c;大厂特训28天等等&#xff09; 欢迎大家一起学习。 链接&#xff1a;传送门 目录标题导读Java蓝桥集训面试题点击直接资料领取导读 在刚刚结束的 每日算法&面…

【pandas】教程:3-取DataFrame子集

pandas 取 DataFrame 的子集 pandas 选择列 注&#xff1a; 引用库的导入和数据的导入只做一次&#xff0c;所有代码是在 jupyter notebook 里完成的。 import pandas as pd titanic pd.read_csv("data/titanic.csv")只要年龄数据 ages titanic["Age"…

速度杠杠的,部署机器学习模型的这7个要点要谨记

在模型部署时&#xff0c;模型的性能和耗时都非常重要。但是我们在构建模型时&#xff0c;往往没有考虑模型的预测速度。虽然性能优化会损害预测准确性,但更简单的模型通常运行得更快&#xff0c;也不容易过拟合。 预测延迟被测量为进行预测所需的经过时间。延迟通常被视为一个…

降维和特征选择的对比介绍

在machine learning中&#xff0c;特征降维和特征选择是两个常见的概念&#xff0c;在应用machine learning来解决问题的论文中经常会出现。特征降维和特征选择的目的都是使数据的维数降低&#xff0c;使数据维度降小。但实际上两者的区别是很大&#xff0c;他们的本质是完全不…

Java整合RocketMQ实现生产消费

文章目录参考文档环境搭建生产者普通消息同步发送异步发送单向传输顺序消息延迟消息批量消息事务消息消费者Push消费Pull 消费代码仓库参考文档 RocketMQ作为阿里系开源项目&#xff0c;有非常成熟的中文文档可以快速了解并上手。 环境部署控制台安装RocketMQ常见问题 环境搭…

【现代机器人学】学习笔记八:轨迹生成

这节课的内容主要讲述如何通过插值等方式生成一条满足运动学约束的运动轨迹。这节的内容在全书中较少&#xff0c;相比前一章开链动力学而言&#xff0c;可以说内容少了许多。但是这节的内容却是目前在机械臂应用方面使用最广泛的一节。 闲话休提&#xff0c;马上开始&#xf…

ThreeJS:创建第一个三维场景

场景效果 ThreeJS与WebGL WebGL使得开发者可以直接使用显卡的计算资源,创建高性能的二维和三维计算机图形效果,然后在JavaScript脚本中进行WebGL编程,创建三维场景并生成动画。但是,原生的WebGL编程是十分复杂的,且容易出错。然而,Three.JS库可以简化WebGL的开发过程。 基…

十、Java 17 新特性

十、Java 17 新特性 JDK 17 在 2021 年 9 月 14 号正式发布了&#xff01;根据发布的规划&#xff0c;这次发布的 JDK 17 是一个长期维护的版本&#xff08;LTS)。Java 17 提供了数千个性能、稳定性和安全性更新&#xff0c;以及 14 个 JEP&#xff08;JDK 增强提案&#xff09…

示波器应用(二)

前篇我们对场景六基色色相和白平衡还有明度进行了验证&#xff0c;对黑白场做了微调。后面我们还需要对场景调光。 本篇主要涉及一些画面美术知识&#xff0c;不感兴趣可以跳过。 我们需要先了解一个摄影知识 曝光 下面要说到一种颜色模式HSB&#xff0c;HSB分别表示&#…

Redhat-ansible-合集

1.安装 2.部署ANSIBLE 2.1INVENTORY 2.2ANSIBLE配置文件 2.3AD HOC命令 3.PLAYBOOK 4.变量 5.ansible vault加密变量 6.ansible_facts 7.loop 8.条件判断 9.handler处理 10.错误处理 11.tags标签 12.管理文件 13.template模板 14.host-pattern 15.动态Inventory 16.ro…

玻纤效应对skew的影响(一)

在高速SerDes传输系统中&#xff0c;随着信号速率的提高&#xff0c;UI会越来越小&#xff0c;传输线的对内skew会越来越大。以PCIe信号来说&#xff0c;PCIe4.0速率的一个UI是62.5ps&#xff0c;当速率提高到PCIe5.0时&#xff0c;每个UI就只有31.25ps&#xff0c;更进一步&am…