用于cython的magic memoryView()样式转换

magicmemoryview的Python项目详细描述


允许我们将mmap.mmap或其他缓冲区强制转换为 正确类型的cython指针。

cython能够将很多东西投射到 正确的类型,特别是借助于memoryview。然而, 在python 2中,memoryview缺少memoryview.cast方法 (所以cython不会让我们改变数组的维数)。此外, python 2和3都要求内存映射是可写的(使 指针类型const在这里似乎也没有帮助)。

这个类接受一个(可能是只读的)memmap对象,并生成一个 python对象,具有返回正确内容的__getbuffer__方法。 它假装底层缓冲区是可写的以使cython 快乐。如果给它一个只读缓冲区,并尝试写入结果, 那你就不开心了。

当cython将python对象转换为指针时,它保存一个 为了防止 指被垃圾回收的内存。那MagicMemoryView 反过来保持对底层数据的引用,所以所有的东西都应该 按预期行事。

用法:

from magicmemoryview import MagicMemoryView

cdef double data[:, :, :]

data = MagicMemoryView(source_buffer, (24, 12, 25), "d")

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Clojure关键字在内存中的大小是多少?   Java中有固定长度的通用数组对象吗?   PostgreSQL:通过Java更新我的用户表   错误:使用java解析xml   java Json显示列表中对象的名称   java比较JodaTime时区   与JAVA中的API和包的区别?   java的int值在for循环中不改变   谷歌应用引擎中的java RSA   迁移到spring 5后出现java非法字符错误   java Websphere管理控制台不工作   JavaGSON如何始终在json中包含毫秒?   带有空格和双引号的windows Java ProcessBuilder命令参数失败   java错误:重复的zip条目[43.jar:org/apache/http/annotation/NotThreadSafe.class]