IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Parallel Python 并行计算(PP) -> 正文阅读

[Python知识库]Parallel Python 并行计算(PP)

作者:recommend-item-box type_blog clearfix

本文将介绍Python分布式并行编程模块Parallel python?(简称PP),?pp-1.6.4.4的使用。

PP是一个python模块,提供在SMP(多处理器或多核)和集群(通过网络连接的计算机)上并行执行python代码的机制。

PP模块克服了GIL(全局解释器锁)这个限制,并提供了一种写并行python应用程序的简单方法。内部ppsmp使用进程和IPC(进程间通信)来组织并行计算。后者的所有细节和复杂性完全被隐藏,应用程序只需负责提交作业并检索其结果(写并行应用程序的最简单的方法)。?跨平台可移植性和动态负载平衡允许PP即使在异构和多平台集群上也能有效地并行计算。

目? ? ?录


1、安装

2、特点

3、PP的运行模式

?4、使用示例

5、类似模块


1、安装

?1、pip安装

?# pip install pp

2、源码安装

# tar -xvzf pp-xxx.tar.gz

# python setup.py install

2、特点

  1. 在SMP和集群上并行执行python代码
  2. 易于理解和实现基于Job的并行化技术(易于并行转换串行应用程序)
  3. 自动检测最佳配置(默认情况下工作进程数设置为有效处理器数)
  4. 动态处理器分配(工作进程数可以在运行时更改)
  5. 具有相同功能的后续作业的低开销(实现透明高速缓存以减少开销)
  6. 动态负载平衡(作业在运行时在处理器之间分布)
  7. 容错(如果其中一个节点发生故障,任务在其他节点上重新调度)
  8. 计算资源的自动发现
  9. 计算资源的动态分配(自动发现和容错的结果)
  10. 网络连接的基于SHA的认证
  11. 跨平台可移植性和互操作性(Windows,Linux,Unix,Mac OS X)
    ?

3、PP的运行模式

主要分为下面2种方式。

1、本地模式

?利用cpu多核多进程,代码方式:

import pp

job_server = pp.Server(cpu核心数)

job = job_server.submit(工作函数,入参,相关函数,相关引用模块)
job()

2、集群模式

创建代码并分发worker执行任务返回执行结果。需要在各个节点安装pp包,并在不同的节点运行ppserver。运行方式:python ppserver.py -p 9696 -s 123 -w 2

各参数含义:-p:通信的端口号, -s:密码? -w:cpu核心数

#python ppserver.py -p 9696 -s 123 -w 2
workers = (host1:9696,host2:9696,...)
job_server = pp.Server(ppservers=workers, secret='123')
job = job_server.submit(工作函数,入参,相关函数,相关引用模块)
job()

一般是master-worker架构形式:

4、使用示例

1、单机模式

建立pp_test.py(该代码引用自网络):

import pp
import math
import time

def isprime(n):
    if not isinstance(n, int):
        raise TypeError("argument passed to is_prime is not of 'int' type")
    if n < 2:
        return False

    if n == 2:
        return True

    maxvalue = int(math.ceil(math.sqrt(n)))
    i = 2
    while i <= maxvalue:
        if n % i == 0:
            return False
        i += 1
        return True


def sum_primes(n):
    return sum([x for x in range(2,n) if isprime(x)])

if __name__ == "__main__":
    job_server = pp.Server()
    print("***并行计算***")
    t1 = time.time()
    f1 = job_server.submit(sum_primes, (100000,), (isprime,), ("math",))
    f2 = job_server.submit(sum_primes, (100100,), (isprime,), ("math",))
    f3 = job_server.submit(sum_primes, (100200,), (isprime,), ("math",))
    f4 = job_server.submit(sum_primes, (100300,), (isprime,), ("math",))
    a = f1()
    b = f2()
    c = f3()
    d = f4()
    t2 = time.time()
    print(str(t2-t1),a,b,c,d)

5、类似模块

1、Python的multiprocessing模块不但支持多进程,其中的managers子模块还支持把多进程分布到多台机器上。

2、基于Python的分布式执行引擎 Ray?

? ? ?相比python原生的multiprocess和multithreading,Rag使用起来更简单强大。


参考:https://www.parallelpython.com

参考:https://blog.csdn.net/wangshuang1631/article/details/53196137/

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 11:36:25  更:2021-07-25 11:37:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 3:03:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码