14得票2回答
如何使用Cython类型化内存视图从Python接受字符串?

如何编写一个Cython函数,以typed memoryview的形式接受一个字节串对象(普通字符串、bytearray或遵循buffer protocol的其他对象)? 根据Unicode and Passing Strings Cython教程页面的说明,以下代码应该可以实现: cpd...

11得票2回答
非C程序员的缓冲区和Memoryview对象解释

Python 2.7引入了新的buffers和memoryview对象API。 我阅读了相关文档,我认为我已经掌握了基本概念(以原始形式访问对象的内部数据而不进行复制,这意味着一种“更快且占用更少内存”的获取对象数据的方式),但要真正理解文档,读者应该具备超出我所知的C语言知识。 如果有人...

21得票3回答
Cython: 缓冲区类型不匹配,期望为 'int' 但实际得到的是 'long'。

我在尝试将这个整数的memoryview传递给这个(相当琐碎的)函数时遇到了问题。Python 给了我这个错误:ValueError: Buffer dtype mismatch, expected 'int' but got 'long' 有人能帮我理解一下发生了什么吗?在stackover...

8得票3回答
如何在Cython中将C指针和长度封装在新式缓冲区对象中?

我正在使用Cython编写Python 2.7扩展模块。如何创建实现新式缓冲区接口的Python对象,以包装由C库提供给我的一块内存?该内存块只是一串字节,而不是结构或多维数组。我被给予一个const void *指针和一个长度,以及有关指针有效期的一些详细信息。 我无法复制内存-这会损害我...

27得票1回答
Cython类型化内存视图:它们究竟是什么?

Cython的文档很好地解释了内存视图的作用、如何声明和使用。然而,它们到底是什么还不是很清楚。例如,从一个NumPy数组进行简单赋值操作:my_arr = np.empty(10, np.int32) cdef int [:] new_arr = my_arr 使用内存视图可以加快对my_a...

8得票4回答
在字节对象上获取指向Python memoryview的指针

我是一名有用的助手,可以翻译文本。 我有一个指向bytes对象的Python memoryview,我想在Cython中对其进行一些处理。 我的问题是: 因为bytes对象不可写,所以Cython不允许从中构建类型化(Cython)memoryview 我也不能使用指针,因为我无法获取...

7得票1回答
在Python中正确丢弃mmap内存的ctypes指针

我遇到了一个问题,就是在Python中创建指向mmap后无法正确关闭它们。我的使用情况是打开文件(通常是UIO设备以便操作硬件,但是这个问题也会出现在普通文件上),将它们映射到内存并将其用作ctypes结构的缓冲区。通常是数据结构体或数据数组。最小化的示例代码如下: import ctype...

11得票2回答
mpi4py中的共享内存

我使用一个 MPI (mpi4py) 脚本(在单个节点上),它处理一个非常大的对象。为了使所有进程都能访问该对象,我通过 comm.bcast() 进行分发。这将对象复制到所有进程中,并在复制过程中消耗大量内存。因此,我想分享类似于指针的东西,而不是对象本身。我发现 memoryview 中的...

9得票1回答
如何在Cython中获取typed memoryviews的大小

在Cython中,能否获取MemoryView的大小?理想情况下,我想要像numpy中的arr.shape一样的东西。

8得票1回答
Cython:在多维内存视图切片中分配单个元素

当我将单个值分配给多维内存视图的切片时,Cython似乎使用了错误的步幅,除非切片沿着第一维。以下是一个完整的示例: # bug.py import numpy as np def bug(): #cdef int[:, ::1] a a = 2*np.ones((2, 2...