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

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

11得票1回答
如何为非连续的内存位置创建memoryview?

我在内存中有一个分散的结构,希望将其访问为连续的内存视图。是否有简单的方法可以做到这一点,还是应该实现自己的解决方案? 例如,考虑一个由记录组成的文件格式。每个记录都有一个固定长度的标头,指定记录内容的长度。较高级别的逻辑结构可能分布在多个记录上。如果它能够将自己的分散内存位置视为简单的连续...

11得票1回答
Cython:已释放内存的内存视图

在Cython代码中,我可以分配一些内存并将其包装在一个内存视图中,例如像这样: cdef double* ptr cdef double[::1] view ptr = <double*> PyMem_Malloc(N*sizeof('double')) view = <d...

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

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

10得票2回答
如何在Cython中动态声明2D C数组

我需要使用各种大小的2D numpy数组执行大量工作,并希望将这些计算转移到cython中。我的想法是,我的2D numpy数组将从python传递到cython,然后转换为c数组或内存视图,并在一系列其他c级函数中使用以进行计算。 经过一些分析,由于一些严重的python开销,我排除了在c...

9得票1回答
Python 2.7和Python 3.4中使用memoryviews的Ctypes from_buffer

我可以帮您翻译成中文。以下是翻译的结果,未做任何修改。 我试图将memoryview中的数据传递到ctypes数组中,在Python 3.4中可以正常工作,但在Python 2.7中无法正常工作。 当我运行以下代码时: from ctypes import c_byte data = m...

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

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

9得票1回答
Cython:在使用类型化内存视图时,我应该使用np.float_t而不是double吗?

关于cython中的memoryviews,如果我正在使用numpy浮点数组,使用NumPy类型(如np.float_t)对视图进行类型化是否比简单地使用double有任何优势? 如果我要使用cdef,那么应该以相同的方式进行类型化,例如: ctypedef np.float64_t np...

8得票3回答
使用Cython实现的布尔型numpy数组

我有一个NumPy布尔数组: myarr = np.array([[False, True], [True, False]]) 如果我尝试使用Cython MemoryView进行初始化,就像这样: cdef bint[:,:] mymem = myarr 我遇到了这个错误: V...

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

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