我使用第三方库,经过大量计算后返回一个包含指针的ctypes对象。
如何保存ctypes对象以及指针指向以供以后使用? 我试过了
scipy.io.savemat
=> TypeError:无法将对象转换为数组cPickle
=>包含指针的ctypes对象无法被腌制答案 0 :(得分:7)
Python无法自动为您执行此操作:
您必须自己构建代码以选择所有需要的数据,将它们放入合适的Python数据结构中(或者只是将数据添加到一个唯一的字节字符串中,您将知道每个元素的偏移量) - 然后将该对象保存到磁盘。
这不是“Python”问题 - 当您使用Python对象和数据时,这正是Python解决的问题。在C级或更低级别编码时,您不仅要知道数据的位置,还要知道每个数据块的长度(并为每个块分配内存,并在完成后释放它们等)。这就是你在这种情况下必须做的事情。
您的数据结构不仅应该为您提供指针,还应该为您提供每个指向位置的数据长度(以某种方式或其他方式 - 如果指针指向另一个结构,“size_of”将对您有用)< / p>
答案 1 :(得分:0)
您可以将数据复制到Python数据结构中,并在使用指针的contents
属性时取消引用指针。
答案 2 :(得分:0)
要挑选具有指针的ctypes对象,您必须定义自己的__getstate__
/ __reduce__
方法进行pickle,并__setstate__
进行unpickling。有关pickle模块的文档中的更多信息。