我有一个我正试图创建的经典结构。

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])

然而,我只需要有限的功能(按属性名访问)和名称偶的额外开销(例如长度、索引访问,Point等等)而且,我的用例也有固定的__contains__Point.x类型,所以可能还有一个依赖于静态类型保证的进一步的黑客攻击。
有没有内存开销更少的东西?可能是Point.yctypes解决方案?

最佳答案

我想,创建Cython扩展将是减少内存影响的最简单方法。Cython扩展类型的属性直接存储在对象的C结构中,属性集在编译时是固定的(很像Python的__slots__)。

cdef class Point:

    cdef readonly double x, y  # C-level attributes

    def __init__(self, double x, double y):
        self.x = x
        self.y = y

    def __repr__(self):
        return 'Point({}, {})'.format(self.x, self.y)

关于python - Python中更具内存效率的结构表示形式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47853968/

10-09 17:17
查看更多