[python] Uvolnění paměti

superman feed na centrum.cz
Čtvrtek Květen 29 13:45:16 CEST 2008


Obávám se, že jste narazil na limit programovacích jazyků, které dělají 
věci automaticky. Prakticky v žádném jazyku, který striktně paměť řídí 
garbage collectorem není 100%ní kontrola uvolňování objektů.

Můžete zkusit modul gc a metodu collect, případně nastavit meze 
(thresholds) pro všechny generace. Python používá 3 generaci, přičemž v 
generaci 0 jsou nejčerstvější a nejmladší objekty, a gc jí uklízí 
nejčastěji. V generaci 1 jsou stálejší objekty, které v Pythonu jsou 
delší dobu a v generaci 2 jsou "usádlené" objekty, které jsou v kódu 
Pythonu dlouhodobě potřeba.

Miloslav Ponkrác



302302 napsal(a):
> Používám knihovnu OpenOpt ze SciPy a výpočty mnohokrát opakuji (>100000). Použiji tedy klasicky
>
> for i in xrange(0,100000):
>     vypocet()
>
> při vypočtu vznikají objekty, iterace, atp. a hromadí se v paměti i přesto, že je už dále nepotřebuji. Po chvíli mám zaplněnou celou paměť, čímž samozřejmě značně snížím rychlost výpočtů. Otázka tedy je jak lze donutit python, aby uvolňoval nepoužívanou paměť.
> Funkce del maže jen reference a bohužel neuvolňuje samotnou paměť. Lze tedy nějak nastavit Garbage Collector, nebo nějak ručně mazat proměnné?
>
> Díky
> Czenek
>
> Python 2.5.1.
> Ubuntu 7.10.
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
>   



Další informace o konferenci Python