我试图获取在 PyObject* 中保存的数据的内存地址(特定于 Python.h 3.8.2),以便我可以将其复制到缓冲区中。我只能找到如何从对象中复制数据,但没有关于如何获取指针的信息。假设我有这个对象 data
...
PyObject* data = PyLong_FromLong(100L);
目前,似乎我唯一的选择是将这些数据复制出来,然后使用临时变量的地址进行 memcpy,以使数据进入缓冲区。
long temp = PyLong_AsLong(data);
memcpy(buffer, &temp, 8);
由于这样的操作会被执行成千上万次,所以如果我能够获得数据的内存地址并直接将其复制到我的缓冲区中,那么我认为速度会更快。
memcpy(buffer, data->address_to_data(), 8)
不是使用额外的临时变量,而是直接操作。
有人知道如何从 PyObject* 包装器中获取 long 值的内存地址吗?
感谢帮助!
array.array
的东西,并使用缓冲区协议。 - DavidW