abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 11:33 | Komunita

    Přímý přenos (YouTube) z konference LinuxDays 2026, jež probíhá tento víkend v Praze v prostorách FIT ČVUT. Na programu je spousta zajímavých přednášek.

    Ladislav Hagara | Komentářů: 1
    dnes 02:44 | Nová verze

    Byla vydána nová verze 0.17.0 programovacího jazyka Zig (Codeberg, Wikipedie). Přispělo 206 vývojářů. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 21:00 | Zajímavý projekt

    Open-source projekt OpenDLSS-NR je 'bitově přesná reimplementace' neuronové rendrovací sítě DLSS 5 od společnosti NVIDIA, jenže pro grafické API Vulkan (DLSS slouží k vylepšování klasickým způsobem vyrendrovaných snímků pomocí lokálních modelů umělé inteligence, a to v reálném čase). Projekt není nijak spojen se společností NVIDIA, je pouze pro OS Windows a natrénované váhy modelu si uživatelé musí obstarat sami. Zdrojový kód je k dispozici na GitHubu, pod licencí MIT s výjimkou pro komponenty třetích stran.

    AfD 💙 | Komentářů: 0
    včera 20:55 | Zajímavý software

    Společnost Cloudflare představila Clef a Clef-Flash, open-source rozhodovací modely určené pro rychlou a konzistentní klasifikaci vstupů. Na rozdíl od klasických LLM vracejí tyto modely deterministické striktně typované strukturované odpovědi s exaktními pravděpodobnostmi, tedy odpovědi ve stylu přelomového modelu Jev.

    … více »
    AfD 💙 | Komentářů: 1
    včera 04:44 | Nová verze

    Byla vydána beta verze Ubuntu 26.10 s kódovým názvem Stonking Stingray. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 26.10 mělo vyjít 15. října 2026.

    Ladislav Hagara | Komentářů: 0
    1.10. 22:22 | Nová verze

    Byla vydána verze 1.99.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 5
    1.10. 18:11 | Komunita

    Od 13. do 15. října proběhne v Praze OpenSSL Conference 2026. Na YouTube lze zhlédnout videozáznamy přednášek z loňského roku.

    Ladislav Hagara | Komentářů: 0
    1.10. 17:22 | IT novinky

    Eben Upton oznámil další zdražení jednodeskových počítačů Raspberry Pi. Tentokrát 2 GB varianty o 12,50 dolarů. Nově 2 GB Raspberry Pi 4 stojí 67,50 dolarů a 2 GB Raspberry Pi 5 stojí 77,50 dolarů.

    Ladislav Hagara | Komentářů: 6
    1.10. 13:00 | Nová verze

    OpenMandriva ROME, tj. průběžně aktualizovaná (rolling) edice linuxové distribuce OpenMandriva, byla vydána ve verzi 26.09. Vedle Flatpaku také s podporou Snapu.

    Ladislav Hagara | Komentářů: 0
    1.10. 04:33 | Zajímavý software

    Edison Design Group po více než 30 letech zveřejnil zdrojový kód svého EDG C/C++ front-endu. Ten proslul širokou podporou standardů C++ a kompatibilitou s dialekty kompilátorů od Microsoftu, GNU, Clangu, Sunu a dokonce i s prehistorickým cfrontem. EDG byl použit například v kompilátoru Intel C++ Classic, kompilátoru NVCC od firmy NVIDIA pro platformu CUDA nebo v našeptávači kódu IntelliSense v produktech společnosti Microsoft. Projekt nyní spravuje organizace The C++ Alliance a kód je dostupný pod licencí Apache 2.0, doplněnou o výjimky projektu LLVM.

    AfD 💙 | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2784 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    PyQt4 memory leak?

    23.11.2008 13:21 | Přečteno: 1222× | Linux | poslední úprava: 23.11.2008 13:20

    Nedávno som začal viac-menej z donútenia (škola) robiť nejaký program ako semestrálku v pythonovi. Konkrétne som si povedal, že urobím gui k boinc_client-ovi. Prekvapilo ma ale, že aplikácia zaberá stále viac RAM.

    Takže po dlhom skúmaní som došiel k záveru, že problém je niekde okolo riadku s data = QVariant.fromList(...). Tak som urobil malý programík v pythonovi na ktorom by som si vyskúšal ako sa dá uvoľniť táto pamäť. Takže obsah toho malého programíku:

    from PyQt4.QtCore import QVariant
    
    while True:
    	zoznam = QVariant.fromList([QVariant('text1'), QVariant('text2')])
    	zoznam.clear()
    	del(zoznam)
    

    Predpokladám, že tento kód v pythonovi by mal byť ekvivalentný s nasledujúcim programom v C++:

    #include <QVariant>
    #include <QList>
    
    int main(int argc, char *argv[])
    {
    	while (1)
    	{
    		QList<QVariant> zoznam;
    		zoznam.append(QVariant("text1"));
    		zoznam.append(QVariant("text2"));
    		QVariant variant = QVariant(zoznam);
    	}
    }
    

    Napriek tomu po spustení programu v pythonovi sa obsadená RAM stále zväčšuje zatiaľ čo v C++ nie. Robím niečo zle alebo je chyba skutočne niekde mimo môjho kódu? Robí to problémy aj ostatným užívateľom alebo len mne (napríklad preto, že PyQt4 zle skompiloval)?

    Pre tých ktorí chcú vidieť čo to vlastne robím som prihodil aj screenshoty, prípadne môžete pozrieť video, zdrojové kódy nedám, hambím sa za ne.

           

    Hodnocení: 100 %

            špatné • dobré        

    Obrázky

    PyQt4 memory leak?, obrázek 1 PyQt4 memory leak?, obrázek 2

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Luboš Doležel (Doli) avatar 23.11.2008 13:23 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: PyQt4 memory leak?
    Jak má tohle fungovat?
    QVariant variant = QVariant(zoznam);
    Ten řádek je k ničemu...
    mirec avatar 23.11.2008 13:28 mirec | skóre: 33 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: PyQt4 memory leak?
    Robí zhruba to isté čo v python zdrojovom kóde. Išlo mi len o to aby vytváralo QVariant objekt (aby som vyskúšal či nie je chyba v Qt4). Tie 2 zdrojové kódy nemajú žiaden hlbší zmysel, akurát jeden z nich na mojom stroji žerie nenormálne veľa RAM.
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    Luboš Doležel (Doli) avatar 23.11.2008 13:44 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: PyQt4 memory leak?
    Aha, už to chápu, nevšimnul jsem si toho listu v Pythonu.
    andree avatar 23.11.2008 15:51 andree | skóre: 39 | blog: andreeeeelog
    Rozbalit Rozbalit vše Re: PyQt4 memory leak?

    noo, medzi tymi testami je viacero rozdielov... najzasadnejsi ale asi v tom, ze v c++ kode sa ti tie objekty naozaj uvolnia z RAM, kym v pythone je garbage collector.. skus tam este ked tak pridat import gc; gc.collect() za ten kod 'del'

    mirec avatar 23.11.2008 16:12 mirec | skóre: 33 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: PyQt4 memory leak?
    No znížilo to spotrebu RAM na asi 50 kB/s. Neviem či to je spôsobené spomalením zamotného programu (teda volaním collect) alebo to uvoľňuje niečo navyše.
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    mirec avatar 23.11.2008 18:04 mirec | skóre: 33 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: PyQt4 memory leak?
    Ok, takže som trochu skúmal či je to menej nenažrané. V skutočnosti to len extrémne spomalí beh (samozrejme hovorím o tom malom testovacom programe, pri obyčajnom gui to je samozrejme zanedbateľné).
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    23.11.2008 20:55 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: PyQt4 memory leak?
    Zkus nastavit debugovací režim garbage collectoru gc.set_debug(gc.DEBUG_LEAK). V gc.garbage bys pak měl mít seznam objektů, které se nedají uvolnit.
    When your hammer is C++, everything begins to look like a thumb.
    mirec avatar 23.11.2008 21:42 mirec | skóre: 33 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: PyQt4 memory leak?
    To zvyknem vždy kontrolovať. Výstup po určitom počte iterácii (na asi 100MB) je [].
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    24.11.2008 09:18 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: PyQt4 memory leak?
    Takže na openSUSE 11.1 mi to dělá to samé. Navíc volání gc.collect() program spíše jenom zpomalí, takže se zdá, že to něco řeší, ale vždy vrátí 0 uvolněných objektů. Co narůstá je počet objektů (gc.get_objects()), přičemž garbage collector se zdá pracuje, protože počet objektů v jednotlivých generací gc.get_count() roste, ale taky klesá.

    Při nastaveném gc.DEBUG_STATS to naopak vypadá, že collector nepracuje, protože počet objektů roste. Ale ony si údaje gc.get_count() a to, co vypisuje gc samotný, moc neodpovídají.
    gc: done.                                     
    gc: collecting generation 0...                
    gc: objects in each generation: 703 6300 58705
    gc: done.                                     
    gc: collecting generation 0...                
    gc: objects in each generation: 703 7000 58705
    gc: done.                                     
    gc: collecting generation 1...                
    gc: objects in each generation: 703 7700 58705
    gc: done.                                     
    gc: collecting generation 0...                
    gc: objects in each generation: 703 0 67105  
    
    Podle mě je to bug a mělo by to být oznámeno autorům PyQt4.
    When your hammer is C++, everything begins to look like a thumb.
    mirec avatar 23.11.2008 23:08 mirec | skóre: 33 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: PyQt4 memory leak?
    Ok, takže skúsme to uzavrieť. Prosím ak má niekto PyQt4 nech skúsi či to isté robí aj na inom stroji (teda hlavne na inej distribúcii). Predpokladám, že to asi nie je moja chyba, takže ak to robí aj niekomu inému nebolo by zlé nahlásiť bug.
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    24.11.2008 00:07 helb
    Rozbalit Rozbalit vše Re: PyQt4 memory leak?
    Zkusil jsem a deje se mi to na notebooku (gentoo 32bit, python 2.6, PyQt4 4.4.4) i desktopu (gentoo 64it, python 2.5, PyQt4 4.4.3).

    Založit nové vlákno • Nahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.