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 04:00 | Zajímavý software

    Nourish (GitHub) je nový správce oken pro Linux. Tradiční plochy nahrazuje nekonečným plátnem a posouváním a přibližováním. Využívá vlastní kompozitor pro Wayland s názvem y5. Videoukázka.

    Ladislav Hagara | Komentářů: 3
    včera 15:33 | Komunita

    Po 20 letech a 17 otevřených (open source) krátkých filmech Blender Studio oznámilo plán na svůj první celovečerní film. Cílem samozřejmě není jenom nový otevřený film, ale především vývoj a vylepšení otevřených nástrojů pro spolupráci napříč celým procesem a vytvoření otevřené příručky (playbook) pro filmovou produkci ve velkém měřítku s informacemi, které jsou obvykle dostupné pouze uvnitř komerčních studií, a pomoci tak nezávislým tvůrcům překonat technické a organizační bariéry.

    Ladislav Hagara | Komentářů: 0
    včera 05:00 | Nová verze

    Byla vydána nová verze 26.6.25 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

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

    Apple bez varování odstranil ze svého obchodu sociální síť VKontaktě i další aplikace skupiny VK, jako je VK Music nebo VK Video [Novinky.cz].

    Ladislav Hagara | Komentářů: 14
    26.6. 14:22 | IT novinky

    V dubnu loňského roku představený poštovní klient Notion Mail bude 22. září ukončen.

    Ladislav Hagara | Komentářů: 3
    26.6. 04:33 | Komunita

    Konference OpenAlt 2026 hledá přednášející. Proběhne o víkendu 7. a 8. listopadu na půdě Fakulty informačních technologií VUT v Brně. Témata konference jsou: Otevřený a svobodný software, IoT a Hnutí tvůrců, Vzdělávání, Bezpečnost a soukromí, Otevřená společnost, komunity a data, OpenMobility a další.

    Ladislav Hagara | Komentářů: 0
    26.6. 04:22 | IT novinky

    Společnosti OpenAI a Broadcom oznámily čip optimalizovaný pro AI pojmenovaný Jalapeño.

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

    Deno (Wikipedie), běhové prostředí (runtime) pro JavaScript, TypeScript a WebAssembly, bylo vydáno v nové verzi 2.9. Hlavní novinkou je deno desktop pro převod Deno projektu na desktopovou aplikaci. Jedná se o alternativu k frameworkům Electron nebo Tauri.

    Ladislav Hagara | Komentářů: 2
    25.6. 15:44 | IT novinky

    Od zítra jsou Datové schránky oficiálně na nové adrese datovka.gov.cz. Adresa mojedatovaschranka.cz zůstává funkční do 27. srpna 2026, následně budou uživatelé automaticky přesměrováni na datovka.gov.cz.

    Ladislav Hagara | Komentářů: 3
    25.6. 13:44 | Nová verze

    Dolphin (Wikipedie), tj. open source multiplatformní emulátor herních konzolí GameCube a Wii od Nintenda, byl vydán ve verzi 2606. S podporou Game Boy Playeru.

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


    Dotaz: jak na efektivni vstup v pythonu?

    13.12.2005 12:08 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
    jak na efektivni vstup v pythonu?
    Přečteno: 132×

    zdravím, v pythonu začínám a nemám takový přehled o jazyce a knihovnách

    Řešil jsem problém s parsováním textového vstupu (text oddělený rourama, ale na každém řádku jiný počet sloupců a také některé položky obsahovaly znak '\r') - takže celkem legrace

    Jeden "blok" (nebudu říkat řádek, protože to není prvada) vypadá třeba takhle:

    |START|ahoj |  text|zase
    nejaky   text
       ktery je docela
     dlouhy| polozka|STOP|
    

    základní smyčka programu načítá tento jeden blok (jediné co vím, že začíná přesně |START| a končí přesně |STOP|) pomocí sys.stdin.read(1). jednotlivé položky ukládám do pole, které po přečtení jednoho bloku zpracuji a vyhodím na výstup

    dneska sem ale zjistil, ze na vstupu budou asi 4GB (pri soucasnem vykonu by to trvalo asi 8h), takze: jak zefektivnit vstup? (docela by to chtelo :-) )/p>

    never use rm after eight

    Odpovědi

    13.12.2005 12:37 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: jak na efektivni vstup v pythonu?
    jednotlivé položky ukládám do pole, které po přečtení jednoho bloku zpracuji a vyhodím na výstup
    Otázka zní jinak, co to znamená zpracuje? Je možné zpracovat jeden token a ihned ho vypsat, nebo je potřeba mít celý soubor načtený v poli a až potom zpracovávat? Je možné třeba pustit čtení v jednom vláknu a zpracovávání (po načtení nějakého minimálního vstupu) ve druhém?

    BTW: pokud je výkon kritický a budeš zpracovávat 4GB soubory, poohlédl bych se spíše po C.
    When your hammer is C++, everything begins to look like a thumb.
    13.12.2005 13:02 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
    Rozbalit Rozbalit vše Re: jak na efektivni vstup v pythonu?
    jak sem psal:
    které po přečtení jednoho bloku zpracuji a vyhodím na výstup
    asi sem se zeptal spatne: jak moc je v pythonu efektivni sys.stdin.read(1) ?

    ja jsem spise javista... takze do Ccka bych se vubec nehrnul :-) - radeji mam jazyky vyssi urovne
    never use rm after eight
    13.12.2005 15:20 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: jak na efektivni vstup v pythonu?
    Jde mi o to, zda se do pole blok (4GB blok?) neukládá zbytečně a nedá se hned poslat na výstup. Mě z tvého popisu napadlo, že kód většinu času tráví ukládáním po paměti a tím zpracováváním - chtělo by to profilovat.

    Jinak efektivitu sys.stdin.read(1) si můžeš snadno změřit (a porovnat třeba s Perlem, Javou, ...) přiznám se, že by mě výsledky zajímaly.
    $ seq 1000000 > milion.txt
    $cat read
    #!/usr/bin/python
    
    import sys
    while (sys.stdin.read(1)):
      pass
    
    $ time cat milion.txt | ./read
    
    real    0m13.338s
    user    0m13.233s
    sys     0m0.068s
    
    When your hammer is C++, everything begins to look like a thumb.
    13.12.2005 15:50 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
    Rozbalit Rozbalit vše Re: jak na efektivni vstup v pythonu?
    dělám chybu a vím o tom:

    základní pravidlo optimalizace: neoptimalizovat... a asi u toho zůstanu... bez profilovacího nástroje stejne nevim kde mi to zere cas, takze...

    spise sem cekal jestli se nekdo neozve treba takhle: no fuj, nacitat to po znacich, to je ale prasarna - nikdo se takhle neozval, tudiz povazuji tuhle metodu za beznou (at je nebo neni efektivni) - treba v jave se to realizuje pomoci BufferedReader a ten zajistuje efektivnejsi vyuziti zarizeni
    never use rm after eight
    13.12.2005 13:04 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
    Rozbalit Rozbalit vše Re: jak na efektivni vstup v pythonu?
    jinak v jave s vlaknama bezne delam, ale -- jak sem psal -- v pythonu zacinam, tak se do vlaken asi pustet nebudu (na srozumitelnstoi programu to asi moc neprida), a asi to ani nema v tomhle pripade cenu
    never use rm after eight
    13.12.2005 19:34 Jan Martinek | skóre: 43 | blog: johny | Brno
    Rozbalit Rozbalit vše Re: jak na efektivni vstup v pythonu?
    Jestliže jsi vše pečlivě napsal v Pythonu, funguje to, je to pomalé a nedá se s tím nic dělat, tak je jediná možnost naprogramovat to v C a udělat binding do Pythonu (jestli chceš zůstat u jazyka vyšší úrovně).

    Python je přímo na tohle stavěný. Velmi pohodlně se v něm píše, ale kritické části lze napsat v C, přičemž "python C API" je poměrně jednoduché. Tím spojuje výhody obou přístupů.

    I kdyby byl Python stokrát pomalejší než C, tak při osmihodinovém běhu Pythonovského programu to představuje pět minut v C. Myslím, že něco je špatně bez ohledu na výběr jazyka ...

    Založit nové vláknoNahoru

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

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