首页 > 编程问答 >在 Azure 上部署代码时使用 Python 的多处理模块是否有意义?

在 Azure 上部署代码时使用 Python 的多处理模块是否有意义?

时间:2024-07-25 05:31:58浏览次数:12  
标签:python azure parallel-processing multiprocessing vcpu

我们的团队在 Azure 机器学习 (AML) 上部署了一个 Python 脚本来处理存储在 Azure 存储帐户上的文件。

我们的管道由一个 ForEach 活动组成,该活动调用每个或列出的文件的 Python 脚本。从 Azure 数据工厂 (ADF) 运行它会触发多个单独的管道 同时运行 我没有使用表达式 并行 ,因为我不确定如何在不同的 vCPU 之间分配这些单独的作业。

除了由 AML 管理的“并行化”之外,并行化使用Python的 多处理 模块在Python级别进行处理?

我使用以下方法进行了尝试,但它似乎并没有减少总体处理时间。

from multiprocessing import Process
from multiprocessing import Pool

[...]

mp_processes = 2
if mp_processes is True :
    p = Pool(int(mp_processes))
    output1, output2 = zip(*p.map(process, process_queue))

[...]

在 Azure 机器学习中使用 Python 的 multiprocessing 模块来并行化你的代码, 取决于你的工作负载和 Azure ML 计算实例配置 ,可能有意义,也可能没有意义。

以下是你需要考虑的因素:

何时在 Azure ML 中使用 multiprocessing 有意义:

  • CPU 密集型任务: 如果你的 Python 脚本执行了大量的 CPU 密集型操作(例如,数值计算、图像处理), multiprocessing 可以通过在多个核心中分配工作负载来帮助你充分利用 Azure ML 计算实例的 CPU 资源。
  • 并行处理独立任务: 你的 process 函数处理单个文件,并且每个文件都可以独立于其他文件进行处理。这与 multiprocessing 的工作方式很好地一致。
  • 计算实例具有多个内核: 确保你的 Azure ML 计算实例具有多个内核,以便 multiprocessing 可以有效地分配工作负载。

何时在 Azure ML 中使用 multiprocessing 没有 意义:

  • I/O 密集型任务: 如果你的脚本花费了大量时间等待 I/O 操作(例如,读取和写入文件), multiprocessing 可能无法提供显著的性能提升,甚至可能会由于进程间通信的开销而降低性能。在这种情况下,探索异步 I/O 或其他优化技术可能会更有益。
  • Azure ML 管道并行度: 你的 Azure 数据工厂管道已经通过 ForEach 活动并行运行 Python 脚本的多个实例。在每个实例中添加 multiprocessing 可能会导致资源争用,并且如果管道并行度已经使计算资源饱和,则不会带来任何好处。
  • 单核计算实例: 如果你的 Azure ML 计算实例只有一个内核, multiprocessing 将无法提供任何性能提升,因为它仍然只能按顺序运行进程。

你需要调查的事情:

  • 性能分析: 在没有 multiprocessing 的情况下对你的代码进行性能分析,以识别瓶颈所在。这将帮助你确定并行化是否是正确的优化策略。
  • 资源利用率: 监控你的 Azure ML 计算实例的 CPU 和内存利用率,以了解你的工作负载在没有 multiprocessing 的情况下是否充分利用了可用资源。
  • Azure ML 并行计算目标: 对于更高级的并行计算场景,探索 Azure ML 提供的并行计算目标(例如,Azure ML Compute Clusters),这些目标允许你以分布式方式运行代码。

总而言之:

仅仅添加 multiprocessing 并不能保证提高性能。仔细考虑你的工作负载特征、Azure ML 环境以及资源利用率至关重要。性能分析和实验对于确定 multiprocessing 是否适合你的特定情况至关重要。

标签:python,azure,parallel-processing,multiprocessing,vcpu
From: 78790660

相关文章

  • 我已成功安装 pypdf2 但无法将其导入到我的 python 文件中
    我已经成功安装了pypdf2模块,但在导入它时,我发现该模块丢失了。我尝试使用fromPyPDF2importPdfReader导入,但它不起作用此问题的各种解决方案是什么?在尝试导入PyPDF2时遇到问题。以下是可能导致此问题的一些常见原因和解决方案:安......
  • Python3打开图片时请求ConnectionResetError(10054)
    我试图从'http://xxx.jpg'之类的网站下载图片。代码:headers={'user-agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/66.0.3359.139Safari/537.36'}url='http://xxx.jpg'resp......
  • Jupyter Notebook 环境中的 Python 版本不匹配
    我遇到Jupyter笔记本启动横幅中报告的Python版本与我在笔记本中查询python--version时显示的版本之间的差异。启动横幅指示Python3.11.9,但是当我运行!python--version时,它返回Python3.11.7。我所做的步骤:basecondahas3.11.7versio......
  • Python XML 解析:字符串中的“<”被阻塞
    我有一个使用ET.XMLParser来解析CppCheckXML报告文件的Python模块。当尝试解析字符串中包含“<”的XML元素中的属性之一时,它会令人窒息,它会将其解释为格式错误的XML,例如:<errormsg="Includefile<iostream>notfound.">(注意字符和“iostream”之间的空格必须放......
  • 任意几行代码要成为Python中的函数需要什么?
    我正在上一门计算机科学课,我的任务是创建一个程序来实现一个带有参数的函数。我的老师告诉我,下面的代码不是一个函数,这让我很困惑,对于将某些代码行归类为“函数”所需的条件,我感到很困惑。defgame(numbers,max_turns,pfl,tgl):turns=0flag=Falseprint("You......
  • 如何使用 Python 创建新的 Azure 订阅?
    我正在尝试使用PythonSDK以编程方式创建新的Azure订阅。我发现的对AzurePythonSDK的唯一引用是这个这是我最终得到的结果:importazure.mgmt.billingimportazure.mgmt.subscriptioncreds=AzureCliCredential()client_name='test'defcreat......
  • 用于打印脚本输出的 Python 实用程序
    我可以发誓有一个实用程序可以打印一个python脚本,其输出交织在一起。例如,给定一个脚本:a=2b=3print(a+b)print(a*b)该实用程序将输出a=2b=3print(a+b)#>5print(a*b)#>6有人知道该实用程序的名称吗?我最难找到它。谢谢你!描述的实用程序没有标......
  • a method to make some handy tools with python
    Inmyworkingofcomputer,therearealotofsimplejobsthatarefrequentlyrepeated.Itriedtofindawaytomakethesejobbeenprocessedeasily.Method1:Themethodiswritingascripttodothejob,andexecutingthescriptbyutoolsextensionuto......
  • Python网络爬虫详解:实战豆瓣电影信息采集
    文章目录前言一、爬虫是什么?二、常用库及其作用1.Requests2.BeautifulSoup3.lxml4.Scrapy5.Selenium6.PyQuery7.Pandas8.JSON9.Time三、实现步骤步骤一:环境准备步骤二:数据采集步骤三:数据处理步骤四:数据存储总结前言随着互联网的迅猛发展和数据分析需求的不......
  • python学习之内置函数
    Python拥有许多内置函数,这些函数是Python的一部分,不需要额外导入即可直接使用。这些函数提供了对Python解释器功能的直接访问,涵盖了从数学计算到类型检查、从内存管理到异常处理等各个方面。下面是一些常用的Python内置函数及其简要说明:一、Printprint函数大家都不会......