我是靠谱客的博主 内向太阳,最近开发中收集的这篇文章主要介绍boost python_Boost Python:将大型数据结构传递给python,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

为了防止在Boost.Python中进行复制,可以执行以下任一操作:

>使用政策至return internal references

>在免费商店中分配并使用策略来安装Python manage the object

>分配Python对象,然后extract对C中的数组的引用

>使用智能指针在C和Python之间共享所有权

如果矩阵具有C样式的连续内存布局,请考虑使用Numpy C-API. PyArray_SimpleNewFromData()函数可用于创建ndarray对象,该对象包装已在其他位置分配的内存.这将使人们可以将数据公开给Python,而无需在语言之间复制或转移每个元素. how to extend documentation是用于处理Numpy C-API的重要资源:

Sometimes, you want to wrap memory allocated elsewhere into an ndarray object for downstream use. This routine makes it straightforward to do that. […] A new reference to an ndarray is returned, but the ndarray will not own its data. When this ndarray is deallocated, the pointer will not be freed.

[…]

If you want the memory to be freed as soon as the ndarray is deallocated then simply set the OWNDATA flag on the returned ndarray.

同样,虽然绘图功能可以创建数组的副本,但它可以在C-API内执行此操作,从而可以利用内存布局.

如果需要考虑性能,则可能需要考虑绘图本身:

>取数据样本并作图可能就足够了,具体取决于数据分布

>使用基于栅格的后端(例如Agg)通常会在大型数据集上执行基于矢量的后端

>对其他针对大数据设计的工具进行基准测试,例如Vispy

最后

以上就是内向太阳为你收集整理的boost python_Boost Python:将大型数据结构传递给python的全部内容,希望文章能够帮你解决boost python_Boost Python:将大型数据结构传递给python所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部