Názory k článku Spracovanie dlhotrvajúcej úlohy v Tkinteri

  • Článek je starý, nové názory již nelze přidávat.
  • 10. 2. 2016 0:50

    robotron (neregistrovaný)

    "Počas tvorby programu sme narazili na nízkoúrovňové technické obmedzenia."

    Ne, nikoli, narazili jsme na omezeni autora. Asi by byl mnohem rozumnejsi priklad kadit to pi po cislicich do GUI. Z toho by slo i snaze odvodit pouziti takovyho modelu pro nejakej jinej vypocet. Sotva chapu, k cemu by mohl bejt dobrej program, kterej pracuje davkove a po ukonceni davky vybleje cast vysledku do GUI -- cast omezenou bajtove velikostne na dnesni dobu tak, ze se tam nevejde skoro nic (jak velke jsou dnesni zvuky, obrazky, mereni a datove soubory...).

    Hodne nesmyslnej priklad.

    Trocha osvezeni: http://www.cut-the-knot.org/Curriculum/Algorithms/SpigotForPi.shtml

    (Rrrola to napsal v x86 asm na tusim 32 bajtu vcetne I/O, ale nenasel jsem to verejne vystaveny, byt jsem ten kod dostal soukrome mailem.)

  • 10. 2. 2016 7:36

    MilanK (neregistrovaný)
    No mne to připadá spíš jako příklad toho, jak by se ta věc řešit _neměla_:
    • okno sice "nezamrzne" úplně, ale moc se to od zamrzlého neliší: je tam navíc jedna animace "pracuji", s aplikací stejně nejde nic jiného dělat, než počkat, až to někdy skončí,
    • tedy přesněji: jde dělat to, že okno zavřu, ale výpočet se i tak dokončí,
    • čekal bych, že ten progress bar bude lineárně ukazovat, kolik je toho již spočítáno, nebo že dokonce v textovém poli uvidím mezivýsledky,
    • pak by se hodilo (i na tento jednoduchý příklad) tlačítko, kterým proces na pozadí zastavím, když vidím, že to trvá dlouho (a že již mi třeba již spočtená přesnost stačí),
    • o nesmyslném "nízkoúrovňovém technickém omezení" už psali přede mnou,
    • opravu Tkinter neumí ve smyčce událostí hlídat i nějaké prostředky IPC, takže se to musí dělat pravidelným testováním (polling) procesu na pozadí?
  • 10. 2. 2016 7:45

    Doli (neregistrovaný)

    Krom výše zmíněného wtf o tom, že omezení velikosti Message v queue by rozhodně nemělo být technická překážka (i bez spigota by stačilo převést na string a poslat ve více částech, které hlavní vlákno zase spojí), mě ještě zaráží přístup autora k "multiplatformnímu kódu". Psát dvě verze téže aplikace je obvykle cesta do pekel. Obzvláště, když ji lze snadno napsat tak aby fungovala na linuxu i na windows. Tak snadno, že to dokonce autor v článku sám bezděky dokázal. Verze pro windows totiž v pohodě funguje i na windows. Ano, není to teoreticky správný kód, ale funguje multiplatformně a případné odchylky od ideálu v praxi bohatě stačí okomentovat ve stylu "# autor ví, že tohle je není úplně dobře, ale musí to tak být, protože windows".

  • 10. 2. 2016 10:04

    pet (neregistrovaný)

    Původně jsem myslel, že autor chce veřejnost upozornit na to, že při použití Tkinter nefunguje automatické uvolňování paměti zabrané automaticky zrušenými grafickými objekty, ale je potřeba každý objekt v rušeném stromu explicitně zrušit, případně že na to má nějaký „workaround“. Je to to největší omezení Tkinter, na které navíc není nikde upozorněno.