[python] Alokace pameti

Koumes21 koumes21 na gmail.com
Čtvrtek Prosinec 25 19:08:14 CET 2008


Dobrý den,

je to celkem zajímavé, mně osobně to připadá jako nedodělávka Pythonu,
hlavně třídy list. Zajímavost: v Pythonu 3k to funguje správně, ale
protože třídu list nějak vylepšili, tak to naalokuje 200MB, pak to
spadne na 10MB a pak zase 200MB. Docela mě zajímá, co s tím je, tak se
na to ještě kouknu. Zatím jsem zkoušel použít "del" na list i na jeho
jednotlivé členy, zkoušel jsem list.pop(), ale nic nefunguje tak jak má.

Koumes21

slush napsal(a):
> Zdravim,
> 
> narazil jsem na problem, ktery nedokazu vysvetlit. Mozna je nekde chyba,
> ale mnohem pravdepodobneji jen neco delam spatne ja. Jedna se o
> abnormalni "nenazranost" pythonu a o nasledne neuvolnovani pameti pote,
> co naalokovanou pamet jiz nepotrebuji.
> 
> V priloze zasilam jednoduchy skript,ktery nejdrive naalokuje seznam o
> delce 10 mil. zaznamu, nasledne seznam smaze (nastavenim seznamu na
> nulovou delku) a opet ho naalokuje. Cekal bych, ze pametova narocnost
> bude nekde v rozmezi desitek MB (tedy v prumeru do 10 bytes na jednu
> polozku ciselneho seznamu) a ze po uvolneni seznamu dojde ke zmenseni
> obsazene pameti na predchozi uroven.
> 
> Problem 1) Python si pro 10 mil. číselných záznamů naalokoval cca 160 MB.
> Problem 2) Po odalokovani klesla spotreba pameti na 120MB
> 
> Podle hrubych internich vypoctu mi vychazi, ze ten 40MB rozdil je
> uvolneni datovych struktur primo spojenych s ulozenym seznamem a po
> uvolneni seznamu opravdu dochazi k odalokovani. Neni mi ale jasne, co
> obsahuje zbyvajicich 120MB.
> 
> Zkousel jsem do tohoto skriptu zapracovat i spravu garbage collectoru
> (model gc). Bohuzel, po odalokovani pameti gc neobsahoval zadne
> informace o zabrane pameti,ackoliv skript stale konzumoval 120 MB.
> 
> Prilozeny skript a vyse obsazenych prostredku jsem overoval pod Linuxem
> a Windows Vista, v obou pripadech se stejnym vysledkem (v Linuxu byla
> celkova spotreba o cca 4 MB mensi).
> 
> Hlavni otazkou tedy je, jestli je toto chovani normalni, respektive
> jestli lze nejak ridit spotrebu pameti pythonem.
> 
> Diky za kazdy tip,
> Marek
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python

------------- další část ---------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 250 bytes
Desc: OpenPGP digital signature
URL: <http://www.py.cz/pipermail/python/attachments/20081225/9c776ca4/attachment.pgp>


Další informace o konferenci Python