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
