问题标签 [memoryview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何避免 PyObject_to_MemoryviewSlice、GOTREF / DECREF Python API 调用?
我在对我的代码进行 cythonizing 时遇到问题,更具体地说是以下(和类似的)代码片段:
其中 grad_d_im_d_jm(...) 将返回一个双 [:,:] 内存视图。此代码将由 Cython 翻译成以下 C 代码:
当我在循环中执行此操作时,我怀疑 Python API 调用会对我的代码速度产生相当大的影响。
GOTREF / DECREF 调用也发生在其他场合,以及 PyFloat_asFloat:
其中 scalar_product() 返回一个 cdef 浮点数。这个片段被翻译成
我正在运行 Python 2.7.11+ 和 Cython 0.23.4。如果您能告诉我 a) 这与性能无关或 b) 如何解决它,我将不胜感激。如果我能改进这个问题,请告诉我,我很乐意这样做。
python - 在 Cython 中对内存视图进行排序
如何在 Cython 中对内存视图进行就地排序?有没有内置函数可以做到这一点?现在我必须改用numpy
数组并使用numpy
's 排序,这非常慢。
numpy - numpy.asarray 对 cython memoryview 失败
我在使用 numpy.asarray 和我无法解释的 memoryview 对象时遇到了一些奇怪的行为。这是一个在 jupyter 笔记本中使用 cython 魔法的简短示例——我只是创建了一个函数,它需要两个结构数组缓冲区并返回它们。一个有两个 int,另一个有 long 和一个 int:
现在我在 python 中创建两个数组来传递给这个函数:
两者都作为 MemoryView 对象成功返回。现在我想把它们变成一个 numpy 数组:
我在这里想念什么?为什么第二个结构不起作用?任何提示将非常感谢!
python-3.x - Python 3:从内存视图返回单个位
使用 python 3.5,我从 PostgreSQL 接收一个字节作为 memoryview。
如何读取此字节的单个位?有没有办法获得这个单字节的按位表示?我想像
应该可以解决问题,但它不适用于内存视图。还有类似的东西
显然不起作用...感谢您的任何提示和支持。
python - 使用 Cython 优化 Python Scipy 操作
嗨,我想计算相关性(r)值的 3D 矩阵的 p 值并计算完整 p 矩阵的 FDR 阈值(仅根据上三角 p 值计算 FDR)。3D 矩阵很大(208、3544、3544)。目前我使用这些 cython 函数来做到这一点。但是,我想让它更快,如果可能的话,让它使用更少的内存。你能帮我吗?
python - Python Memoryview vs Bytearray?
Python2.7什么时候应该使用memoryview?我只是找不到在常规bytearray上使用它的任何好处。此外memoryview不支持字符串方法,这使得它绝对无法使用。我错了吗?
python - 使用 memoryview 读取二进制文件
我在下面的代码中读取了一个具有特殊结构的大文件 - 其中有两个需要同时处理的块。我没有在文件中来回寻找,而是加载了这两个包含在memoryview
调用中的块
该文件已正确解析,但由于这是我第一次使用 mamoryview 界面,我不确定我是否正确。file_names_block 由 null 终止的 c 字符串组成。
- 我的技巧是
file_names_block[names_record_index:]
使用 memoryview 魔术还是创建一些 n^2 切片?我需要在这里使用islice
吗? - 如所见,我只是手动查找空字节,然后继续
unpack_from
。但是我阅读了如何在 python 中将字节字符串拆分为单独的字节,我可以cast()
在内存视图上使用(文档?) - 任何方式使用它(或其他技巧)以字节为单位拆分视图?我可以打电话split('\x00')
吗?这会保持内存效率吗?
我希望能深入了解一种正确的方法(在 python 2 中)。
cython - Cython - 返回任意长度的 Typed MemoryView
我编写了一个 Cython 函数,该函数将数字的列表/类型化内存视图作为参数并返回相同长度的类型化内存视图:
在对其进行了数千次测试后,我开始收到Segmentation fault (core dumped)
错误消息。我意识到这是一个内存管理问题,但我找不到如何管理函数返回的类型化内存视图的内存的示例。我发现的唯一有用信息是关于内存分配的信息,它建议将生命周期与result_arr
python 对象联系起来,并使用一种__dealloc__
方法来释放内存。
有没有一种方法来管理 memoryview 垃圾收集,它不涉及创建用于释放内存的 python 类?
编辑:我试过这个,它似乎以正确的方式释放内存。
为什么这行得通,是否有更好的方法来管理内存?
python - 如何在python中打包两个字节数组并从文件中写入/读取
假设说我有字节格式的键和值。我需要将此信息写入文件,然后将其读回以进行重播。最简单的方法是写 len(key)|key|len(value)|value 依此类推。我正在尝试使用 python memoryview 和 struct 编写这个逻辑。
struct 模块中的 pack_into 只接受整数形式的输入。
我无法找到解决此问题的方法。请帮助我解决问题。
python - 在字节对象上获取指向python memoryview的指针
我有一个 pythonmemoryview
指向一个bytes
我想在 cython 中执行一些处理的对象。
我的问题是:
- 因为
bytes
对象不可写,cython 不允许从中构造类型化(cython)内存视图 - 我也不能使用指针,因为我无法获得指向 memoryview 开始的指针
例子:
在蟒蛇中:
在赛通中:
cdef char * my_ptr = &array[0]
无法编译并显示以下消息:Cannot take address of Python variable
cdef char[:] my_view = array
在运行时失败并显示以下消息:BufferError: memoryview: underlying buffer is not writable
如何解决这个问题?