用户名
Email
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
帖子
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
一文速通Python并行计算:00 并行计算的根本概念 ...
一文速通Python并行计算:00 并行计算的根本概念
写过一篇
金牌会员
|
2025-3-21 00:17:49
|
显示全部楼层
|
阅读模式
楼主
主题
936
|
帖子
936
|
积分
2808
一文速通 Python 并行计算:00 并行计算的根本概念
摘要:
该文先容了 Python 并行计算的核心概念、编程模型及其应用,并先容了了并行步伐的性能分析与优化方法,如并行服从、加速比及 Amdahl 定律。此外,该文先容了共享内存、消息通报、数据并行和任务并行等并行编程模型,并提供 Python 情况配置指南。
关于我们更多先容可以检察云文档:
Freak 嵌入式工作室云文档
,或者访问我们的 wiki:
https://github.com/leezisheng/Doc/wik
原文链接:
FreakStudio的博客
往期保举:
学嵌入式的你,还不会面向对象??!
全网最得当入门的面向对象编程教程:00 面向对象计划方法导论
全网最得当入门的面向对象编程教程:01 面向对象编程的根本概念
全网最得当入门的面向对象编程教程:02 类和对象的 Python 实现-使用 Python 创建类
全网最得当入门的面向对象编程教程:03 类和对象的 Python 实现-为自界说类添加属性
全网最得当入门的面向对象编程教程:04 类和对象的Python实现-为自界说类添加方法
全网最得当入门的面向对象编程教程:05 类和对象的Python实现-PyCharm代码标签
全网最得当入门的面向对象编程教程:06 类和对象的Python实现-自界说类的数据封装
全网最得当入门的面向对象编程教程:07 类和对象的Python实现-类型注解
全网最得当入门的面向对象编程教程:08 类和对象的Python实现-@property装饰器
全网最得当入门的面向对象编程教程:09 类和对象的Python实现-类之间的关系
全网最得当入门的面向对象编程教程:10 类和对象的Python实现-类的继承和里氏替换原则
全网最得当入门的面向对象编程教程:11 类和对象的Python实现-子类调用父类方法
全网最得当入门的面向对象编程教程:12 类和对象的Python实现-Python使用logging模块输出步伐运行日志
全网最得当入门的面向对象编程教程:13 类和对象的Python实现-可视化阅读代码神器Sourcetrail的安装使用
全网最得当入门的面向对象编程教程:全网最得当入门的面向对象编程教程:14 类和对象的Python实现-类的静态方法和类方法
全网最得当入门的面向对象编程教程:15 类和对象的 Python 实现-__slots__邪术方法
全网最得当入门的面向对象编程教程:16 类和对象的Python实现-多态、方法重写与开闭原则
全网最得当入门的面向对象编程教程:17 类和对象的Python实现-鸭子类型与“file-like object“
全网最得当入门的面向对象编程教程:18 类和对象的Python实现-多重继承与PyQtGraph串口数据绘制曲线图
全网最得当入门的面向对象编程教程:19 类和对象的 Python 实现-使用 PyCharm 自动天生文件解释和函数解释
全网最得当入门的面向对象编程教程:20 类和对象的Python实现-组合关系的实现与CSV文件保存
全网最得当入门的面向对象编程教程:21 类和对象的Python实现-多文件的组织:模块module和包package
全网最得当入门的面向对象编程教程:22 类和对象的Python实现-异常和语法错误
全网最得当入门的面向对象编程教程:23 类和对象的Python实现-抛出异常
全网最得当入门的面向对象编程教程:24 类和对象的Python实现-异常的捕获与处置惩罚
全网最得当入门的面向对象编程教程:25 类和对象的Python实现-Python判断输入数据类型
全网最得当入门的面向对象编程教程:26 类和对象的Python实现-上下文管理器和with语句
全网最得当入门的面向对象编程教程:27 类和对象的Python实现-Python中异常层级与自界说异常类的实现
全网最得当入门的面向对象编程教程:28 类和对象的Python实现-Python编程原则、哲学和规范大汇总
全网最得当入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函数的使用
全网最得当入门的面向对象编程教程:30 Python的内置数据类型-object根类
全网最得当入门的面向对象编程教程:31 Python的内置数据类型-对象Object和类型Type
全网最得当入门的面向对象编程教程:32 Python的内置数据类型-类Class和实例Instance
全网最得当入门的面向对象编程教程:33 Python的内置数据类型-对象Object和类型Type的关系
全网最得当入门的面向对象编程教程:34 Python的内置数据类型-Python常用复合数据类型:元组和命名元组
全网最得当入门的面向对象编程教程:35 Python的内置数据类型-文档字符串和__doc__属性
全网最得当入门的面向对象编程教程:36 Python的内置数据类型-字典
全网最得当入门的面向对象编程教程:37 Python常用复合数据类型-列表和列表推导式
全网最得当入门的面向对象编程教程:38 Python常用复合数据类型-使用列表实现堆栈、队列和双端队列
全网最得当入门的面向对象编程教程:39 Python常用复合数据类型-集合
全网最得当入门的面向对象编程教程:40 Python常用复合数据类型-枚举和enum模块的使用
全网最得当入门的面向对象编程教程:41 Python常用复合数据类型-队列(FIFO、LIFO、优先级队列、双端队列和环形队列)
全网最得当入门的面向对象编程教程:42 Python常用复合数据类型-collections容器数据类型
全网最得当入门的面向对象编程教程:43 Python常用复合数据类型-扩展内置数据类型
全网最得当入门的面向对象编程教程:44 Python内置函数与邪术方法-重写内置类型的邪术方法
全网最得当入门的面向对象编程教程:45 Python实现常见数据结构-链表、树、哈希表、图和堆
全网最得当入门的面向对象编程教程:46 Python函数方法与接口-函数与事件驱动框架
全网最得当入门的面向对象编程教程:47 Python函数方法与接口-回调函数Callback
全网最得当入门的面向对象编程教程:48 Python函数方法与接口-位置参数、默认参数、可变参数和关键字参数
全网最得当入门的面向对象编程教程:49 Python函数方法与接口-函数与方法的区别和lamda匿名函数
全网最得当入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
全网最得当入门的面向对象编程教程:51 Python函数方法与接口-使用Zope实现接口
全网最得当入门的面向对象编程教程:52 Python函数方法与接口-Protocol协议与接口
全网最得当入门的面向对象编程教程:53 Python字符串与序列化-字符串与字符编码
全网最得当入门的面向对象编程教程:54 Python字符串与序列化-字符串格式化与format方法
全网最得当入门的面向对象编程教程:55 Python字符串与序列化-字节序列类型和可变字节字符串
全网最得当入门的面向对象编程教程:56 Python字符串与序列化-正则表达式和re模块应用
全网最得当入门的面向对象编程教程:57 Python字符串与序列化-序列化与反序列化
全网最得当入门的面向对象编程教程:58 Python字符串与序列化-序列化Web对象的界说与实现
全网最得当入门的面向对象编程教程:59 Python并行与并发-并行与并发和线程与进程
更多出色内容可看:
给你的 Python 加加速:一文速通 Python 并行计算
一文搞懂 CM3 单片机调试原理
肝了半个月,嵌入式技能栈大汇总出炉
电子计算机类比赛的“武林秘籍”
一个MicroPython的开源项目集锦:awesome-micropython,包含各个方面的Micropython工具库
Avnet ZUBoard 1CG开发板—深度学习新选择
工程师不要迷信开源代码,还要注意根本功
什么?配色个性化的电机驱动模块?!!
什么?XIAO主控新出三款扩展板!
手把手教你实现Arduino发布第三方库
万字长文手把手教你实现MicroPython/Python发布第三方库
文档获取:
可访问如下链接进行对文档下载:
https://github.com/leezisheng/Doc
该文档是一份关于
并行计算
和
Python 并发编程
的学习指南,内容涵盖了并行计算的根本概念、Python 多线程编程、多进程编程以及协程编程的核心知识点:
正文
在阅读本文档之前,需要注意的是,本文档不涉及对计算机体系结构(SISD\MISD 等)和内存组织、以及 MPP 大规模并行处置惩罚、异构计算等知识点讲解,主要偏重于基于 Python 语言的多线程并发、多进程并行、任务同步、消息传输、调试测试等知识点的实现和应用。
1.1 什么是并行计算?并行计算的特点
什么是传统的串行计算?传统的软件是按照串行计算的编程头脑来编写的。串行计算步伐是运行在具有一个核心(或 CPU)的单机上。
一个等待办理的题目被分解为一串独立的命令执行(instructions 命令执行流,也可以是线程)。命令执行流会一个挨一个的,次序执行。
并且在任一时刻都只有一个命令执行流正在执行中。 换句话说,任何时间只有一个线程在执行。
并行计算用最简单的话来解释并行计算就是
同时使用 多个计算资源 (就是多个 CPU)去运行步伐来办理一个需要大量计算的题目 。
并行计算步伐运行在一个多核心(或多 CPU)的计算机、或者由多台计算机构成的网络上。需要进行大量计算的题目,
需要被分解成多个独立的、能够同时运行的部分。不同部分的命令执行流可以同时在不同的 CPU 上得到执行。
换句话说,在同一时间可以有多个线程在执行。
1.2 并行计算的关键概念
任务并行和数据并行:
任务并行是指在多个处置惩罚器上同时执行不同的任务;
数据并行是指在多个处置惩罚器上同时执行相同的操作,但是对不同的数据子集执行
。
并行度:
这是一个度量,
表示在给定时间内可以并行执行的任务数量。
并行算法和并行编程:
并行算法是计划用于并行计算的算法,而并行编程是实现这些算法的过程。
并行编程可能涉及使用特定的并行编程语言或并行处置惩罚库。
1.3 并行计算的学习内容
深入理解并行计算的概念
:除了理解根本的
并行计算概念
(如并行与串行的区别,数据并行与任务并行的概念等)外,还应深入研究
并行算法和并行编程模型
。相识各种
并行架构
(如共享内存、分布式内存和混合模型)以及
并行编程范式
(如消息通报、数据并行、任务并行和流并行)。
编写并优化并行步伐:
使用 Python 的 multiprocessing 等编写更复杂的并行步伐,例如实现并行排序或并行搜刮算法。此外,学习并实践怎样优化并行步伐,包括负载平衡、淘汰通信开销、避免同步延迟等。
并行步伐的性能分析:学习使用专门的工具(例如 Python 的 cProfile 模块或其他性能分析工具)来分析并行步伐的性能。
理解并行服从、加速比、Amdahl 定律等概念,并学习怎样使用这些概念来评估并行步伐的性能。
理解并行计算的挑战和办理方案:
深入理解并行计算的挑战,
包括数据依赖性、竞态条件、死锁、并行开销等,并学习怎样避免或处置惩罚这些题目。
理解并行编程中的同步和锁定概念,并学习使用 Python 的 threading 或 multiprocessing 库来处置惩罚并发题目。
1.4 并行编程模型
并行编程模型是描述并行步伐计划和执行的高级概念。
这些模型为步伐员提供了一种方式来组织和控制并行步伐的计算和通信。有许多不同类型的并行编程模型,包括以下几种:
共享内存模型:
在这种模型中,所有处置惩罚器都可以访问同一内存空间。处置惩罚器通过读写这个共享的内存空间来进行通信。这种模型简单易用,但可能需要处置惩罚数据一致性和同步的题目。
消息通报模型:
在这种模型中,每个处置惩罚器都有自己的内存空间,处置惩罚器之间通过发送和吸收消息来进行通信。这种模型得当在没有共享内存的分布式体系中使用。
数据并行模型:
在这种模型中,数据被划分成多个部分,每个部分在一个处置惩罚器上独立处置惩罚。这种模型得当处置惩罚大量的数据,并且每个数据的处置惩罚方式相同。
任务并行模型:
在这种模型中,不同的任务被分配给不同的处置惩罚器。每个任务可能需要执行不同的操作,且可能相互依赖。
选择使用哪种并行编程模型取决于题目标性质和可用的硬件资源。不同的模型可能需要不同的编程技巧和工具。
1.5 并行步伐性能评价
在优化步伐性能的过程中,性能分析是一个关键步调。性能分析可以资助你相识步伐的运行情况,找出瓶颈,从而可以针对这些瓶颈进行优化。
Python 有一个内置的模块叫做 cProfile,它是一个非常强大的性能分析工具。
cProfile 模块可以提供关于你的步伐哪些部分最消耗时间的详细统计信息。
使用 cProfile 模块,你可以看到你的步伐中每个函数调用的次数,每次调用的时间,以及每个函数统共运行的时间。这些信息可以资助你找出步伐的瓶颈。
常用性能指标包括:
并行服从:并行服从是一个衡量并行步伐性能的指标。
它是
串行步伐运行时间与并行步伐运行时间和处置惩罚器数量的乘积的比值。
并行服从的抱负值是 1,这意味着并行步伐的性能与处置惩罚器数量成正比。然而,
由于通信开销和同步延迟等题目,现实的并行服从通常会低于 1。
加速比:
加速比是
另一个衡量并行步伐性能的指标。
它是
串行步伐运行时间与并行步伐运行时间的比值。
抱负情况下,加速比应该即是处置惩罚器的数量,但现实上由于通信和同步等开销,加速比通常会低于处置惩罚器的数量。
Amdahl 定律:
Amdahl 定律是一个描述并行步伐性能上限的定理。它指出,对于一个给定的题目,纵然我们有无限数量的处置惩罚器,由于步伐中的串行部分,我们的加速比也会有一个上限。
1.6 情况配置
本文档中示例代码需要的依赖库及其版本如下所示,我们使用 miniconda 配置最根本的 Python 情况即可:
这里我们使用 Pycharm IDE 进行编程:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
写过一篇
金牌会员
这个人很懒什么都没写!
楼主热帖
hibernate入门
kubernetes数据持久化StorageClass动态 ...
回忆我的第一个软件项目
Debian/Ubuntu使用apt安装php8.x
26基于java的电影院售票管理系统设计 ...
Java EnumMap putAll()方法具有什么功 ...
OpenHarmony开源鸿蒙与HarmonyOS商业鸿 ...
管理软件定制公司 广州管理软件定制开 ...
基于LSTM的多变量多输出温湿度预测 ...
Jvm调优
标签云
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表