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í
×
    5.6. 22:22 | Nová verze

    Byla vydána nová verze 9.7 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    5.6. 18:22 | Komunita

    Vývojáři webového prohlížeče Ladybird dnes oznámili, že mění způsob vývoje. S blížícím se vydáním alfa verze přestávají přijímat veřejné pull requesty. Všechny otevřené veřejné pull requesty budou uzavřeny. Tým nedokáže garantovat bezpečnost AI generovaných pull requestů.

    Ladislav Hagara | Komentářů: 2
    5.6. 17:33 | Zajímavý software

    OpenLogi (GitHub) je open source náhrada aplikace Logi Options+ pro přizpůsobení myší od společnosti Logitech. Zatím běží pouze na macOS.

    Ladislav Hagara | Komentářů: 1
    5.6. 04:33 | Nová verze

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za květen (YouTube).

    Ladislav Hagara | Komentářů: 9
    4.6. 11:22 | Bezpečnostní upozornění

    Úřad pro ochranu osobních údajů řeší desítky stížností na jednotné měsíční hlášení zaměstnavatele, které stát spustil počátkem dubna. Systém, jenž má firmám odlehčit od desítek formulářů, nejenže výrazně zatížil jejich účetní oddělení, ale docházelo v něm i k únikům osobních dat zaměstnanců k firmám, kde nepracovali. Podle ministerstva práce a sociálních věcí stála za problémem technická chyba. „Incident se týkal několika stovek

    … více »
    Ladislav Hagara | Komentářů: 23
    4.6. 10:46 | Nová verze

    Byla vydána (𝕏, Bluesky) nová verze 22.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    4.6. 04:33 | Nová verze

    Vim Classic byl vydán ve verzi 8.3. Drew DeVault oznámil tento fork editoru Vim (verze 8.2.0148, tj. těsně před zavedením Vim9 skriptování) v březnu letošního roku. Důvodem forku bylo, že vývojáři editorů Vim a Neovim začali při vývoji využívat LLM.

    Ladislav Hagara | Komentářů: 7
    4.6. 03:44 | Komunita

    Open source konference DevConf.CZ 2026 proběhne 18. a 19. června v Brně na FIT VUT. Publikován byl program a spuštěna byla registrace.

    Ladislav Hagara | Komentářů: 1
    3.6. 19:44 | Nová verze

    Společnost JetBrains uvolnila verzi 2 svého open-source velkého jazykového modelu (LLM) pro vývojáře Mellum.

    Ladislav Hagara | Komentářů: 0
    3.6. 14:44 | IT novinky

    Probíhá konference Microsoft Build 2026. Microsoft představuje své novinky: kvantový čip Majorana 2, Surface Laptop Ultra a Surface RTX Spark Dev Box s NVIDIA RTX Spark, Intelligent Terminal, Coreutils for Windows (fork Rust Coreutils), AI modely MAI, AI agenta Scout, platformu pro agent-first zařízení Project Solara, …

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (12%)
     (8%)
     (2%)
     (15%)
     (31%)
     (3%)
     (6%)
     (3%)
     (15%)
     (26%)
    Celkem 1844 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    PyQt4 memory leak?

    23.11.2008 13:21 | Přečteno: 1066× | 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: 32 | 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: 32 | 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: 32 | 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: 32 | 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: 32 | 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áknoNahoru

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