mpi4py 中的 memory 对象及内存操作

本文从本人简书博客同步过来

上一篇中我们介绍了 mpi4py 中的客户端-服务器编程方法,下面我们将介绍 mpi4py 中的 memory 对象及内存操作。

Python 是一种比较高级的动态编程语言,通过其提供的高级对象和语法,我们一般不需要直接同底层的内存操作打交道,比如说,在 Python 中,我们一般不会如在 C/C++ 等语言中一样先分配内存区域,然后使用分配的内存,使用完后再释放内存,Python 会为我们自动进行内存管理,并在合适的时候自动进行垃圾回收,以释放一些不再使用的对象所占用的内存空间。

MPI 标准一般是用像 C 这样较低级的语言实现的,在 MPI 的很多操作中都涉及对内存的直接使用,如消息传递的内存缓冲区,单边通信中的动态窗口创建及内存加载/卸载等,因此 MPI 中提供了若干对内存的操作和管理函数。

mpi4py 对 MPI 标准实现进行了封装,提供了比较高级的 Python 使用接口,使我们能够非常方便地在 Python 语言中以 Python 的高级语法形式使用 MPI。使用 mpi4py,对内存的直接底层操作是应该尽量避免的,因为这并不符合 Python 的编程哲学和编程方式。因此,mpi4py 提供了 MPI.memory 对象,封装和隐藏了对内存的底层操作,为我们提供了比较高级的符合 Python 编程方式的方法接口。如果涉及到内存操作,我们应该尽量使用 MPI.memory 对象。当然,mpi4py 也提供了若干内存操作函数,这些是对 MPI 标准中对应函数的直接封装和调用。

MPI.memory 对象

方法

MPI.memory.frombuffer(obj, bint readonly=False)

MPI.memory 类的静态方法,由参数 obj 的缓冲区创建并返回一个 MPI.memory 对象,readonly 指定创建的 MPI.memory 对象是否是只读的。obj 必须是实现了缓冲区协议(buffer protocal)的对象。

MPI.memory.fromaddress(address, nbytes, bint readonly=False)

MPI.memory 类的静态方法,由内存地址 address 开始的连续 nbytes 字节的一块内存区创建并返回一个 MPI.memory 对象,readonly 指定创建的 MPI.memory 对象是否是只读的。

MPI.memory.tobytes(self)

将该 MPI.memory 对象所包含的内存区的数据作为一个 byte string 返回。

MPI.memory.release(self)

释放该 MPI.memory 对象所包含的内存区。

MPI.memory.__len__(self)

返回该 MPI.memory 对象所包含的内存区的大小(以字节为单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值