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
> [email protected]
> http://www.py.cz/mailman/listinfo/python
>
>
>   

_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem