赞
踩
python并行运算库
Python一直以来都以便利性和程序员友好性着称,但是它并不是周围最快的编程语言。 它的某些速度限制是由于其默认实现cPython是单线程的。 也就是说,cPython一次不会使用多个硬件线程。
虽然您可以使用Python内置的threading
模块来加快处理速度,但threading
只能提供并发性 ,而不能提供并行性 。 这对于运行不依赖于CPU的多个任务非常有好处,但是对于加快每个都需要一个完整CPU的多个任务却无济于事。
Python确实包含一种在多个CPU上运行Python工作负载的本地方法。 multiprocessing
模块旋转Python解释器的多个副本,每个副本位于单独的内核上,并提供用于在多个内核之间拆分任务的原语。 但是有时候甚至multiprocessing
还不够。
有时,这项工作要求不仅在多个内核之间而且还要在多个计算机之间分配工作。 这就是这六个Python库和框架的所在。下面的所有六个Python工具箱都允许您采用现有的Python应用程序,并将工作分散在多个内核,多个机器或两者之间。
由加利福尼亚大学伯克利分校的一组研究人员开发的Ray是许多分布式机器学习库的基础。 但是Ray不仅限于机器学习任务,即使那是它的原始用例。 使用Ray,可以分解任何Python任务并将其分布在整个系统中。
Ray的语法极少,因此您无需大量修改现有应用程序即可对其进行并行化。 @ray.remote
装饰器在Ray群集中的所有可用节点上分配该功能,并使用可选指定的参数来指定要使用的CPU或GPU的数量。 每个分布式函数的结果都作为Python对象返回,因此它们易于管理和存储,并且跨节点或节点内的复制量保持最小。 例如,在处理NumPy数组时,此最后一个功能非常有用。
Ray甚至包括其自己的内置群集管理器,该管理器可以根据需要在本地硬件或流行的云计算平台上自动启动节点。
multiprocessing
来加速Python 从外部看, Dask看起来很像Ray。 它也是一个使用Python进行分布式并行计算的库,具有自己的任务调度系统,对Python数据框架(如NumP
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。