[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