Účinnost paměti při vystavení C struct s Cython

hlasů
2

Dívám se používat Cython snížit požadavky na paměť struktury dat, který je uložen ve slovníku milionů Python časů. Právě teď, jsem implementoval to jako jednoduchá třída Cython v souboru PYX:

cdef class FooBar:
    cdef public int x
    cdef public int y

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

Používám to v jiném souboru PYX naplnit Python slovník, který má miliony tlačítek:

python_dict[key] = FooBar(x, y)

To poskytuje významné úspory paměti ve srovnání s použitím namedtuple nebo jiný Python řešení, jak je mé skutečné obchody třídy 6 celá čísla, a proto vyžaduje 40 bajtů paměti (6 * 4 + 16 bajtů pro PyObject_Head). Nicméně, 16 bajtů režie je podstatné a moje otázka je, jestli existuje lepší způsob, jak to udělat. Já to chápu tak, že nemohu přímo vystavit C struct, protože by to bylo typ cast na Python slovníku vyžadující mnohem více paměti. Python_dict slovník je používán značně v mém především Pythonu. Existuje způsob, jak se vyhnout PyObject_Head režii, aniž by museli přesunout hodně realizaci se k čistým Cython / C?

Položena 27/11/2018 v 18:00
zdroj uživatelem
V jiných jazycích...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more