Re: [python] Pozor na potize s paralelnim bzip2 (pbzip2, lbzip2)

2015-01-06 Tema obsahu Petr Viktorin
2015-01-06 9:34 GMT+01:00 Vladimir Macek ma...@sandbox.cz:
 Ahoj, varovani:

 Zacali jsme pred casem na logy pouzivat paralelni kompresor pbzip2.
 Nadherne zrychli kompresi!

 Z principu ale vytvari tzv. multi-stream tvar, tedy vice bzip2 proudu v
 serii. Proto jeho format neni zcela kompatibilni s puvodnim bzip2.
 Dekomprese v shellu nicmene nevykazuje problemy, napriklad pomoci
 standardniho bzip2, bzcat).

 Dnes jsem se ale spalil, protoze modul bz2 z Pythonu 2.6 ani 2.7 tento
 multi-stream bzip2 neumi nacist:

 BEZ INDIKACE CHYBY (!) skonci dekompresi po n-stovkach tisic bajtu (zalezi
 na tom, jak byl pbzip2 spusten). Je to znamy problem, jehoz reseni se
 vyvojari rozhodli nebackportovat z Python 3, pouze ho zdokumentovat:
 http://bugs.python.org/issue1625.

Backportoval to někdo jiný, jak už to u vylepšených/nových py3 modulů
bývá: https://github.com/nvawda/bz2file

pip install bz2file


 Obejdu to pomozi os.popen('bzcat ...').

 Takze, na bz2 nespolehat! Neni vsechno ruzove...
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


[python] Pozor na potize s paralelnim bzip2 (pbzip2, lbzip2)

2015-01-06 Tema obsahu Vladimir Macek
Ahoj, varovani:

Zacali jsme pred casem na logy pouzivat paralelni kompresor pbzip2.
Nadherne zrychli kompresi!

Z principu ale vytvari tzv. multi-stream tvar, tedy vice bzip2 proudu v
serii. Proto jeho format neni zcela kompatibilni s puvodnim bzip2.
Dekomprese v shellu nicmene nevykazuje problemy, napriklad pomoci
standardniho bzip2, bzcat).

Dnes jsem se ale spalil, protoze modul bz2 z Pythonu 2.6 ani 2.7 tento
multi-stream bzip2 neumi nacist:

BEZ INDIKACE CHYBY (!) skonci dekompresi po n-stovkach tisic bajtu (zalezi
na tom, jak byl pbzip2 spusten). Je to znamy problem, jehoz reseni se
vyvojari rozhodli nebackportovat z Python 3, pouze ho zdokumentovat:
http://bugs.python.org/issue1625.

Obejdu to pomozi os.popen('bzcat ...').

Takze, na bz2 nespolehat! Neni vsechno ruzove...

-- 
:  Vladimir Macek  :  http://macek.sandbox.cz  :  +420 608 978 164
:  UNIX  Dev || Training  :  Python, Django  :  PGP key 97330EBD


___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Jaký Tkinter? GTK? QT? Coooo Amiga Escape sekvence rulez! Odlehčení a dotaz - Python a pamět? ;)

2015-01-06 Tema obsahu Martin

-- Původní zpráva --
Od: Petr Viktorin encu...@gmail.com
Komu: Konference PyCZ python@py.cz, lisi...@seznam.cz
Datum: 1. 1. 2015 22:15:15
Předmět: Re: [python] Jaký Tkinter? GTK? QT? C Amiga Escape sekvence 
rulez! Odlehčení a dotaz - Python a pamět? ;)

2015-01-01 17:47 GMT+01:00 Martin lisi...@seznam.cz:

 Nejdříve odlehčení. Poslední port Pythonu verze 2.3.3. Ukázka jednoduchého
GUI pomocí ESCAPE sekvencí na počítači Amiga (Windows nemá přímou podporu 
ESCAPE sekvencí!)



 https://www.youtube.com/watch?v=JzN1Fl-T7jw



 A teď můj dotaz, stačí mi zodpovědět chování Pythonu verze 2.X v rámci PC.



 Zkopíruji to co jsem se ptal jinde:



 Takový technický dotaz, co se týče náročnosti na pamět. V rámci Pythonu, 
tedy v rámci skriptovacího jazyka. Je pamětově méně náročný, když definuji 
proměnnou za IF/ELIF? Nebo se tahle proměnná načte do paměti i když podmínka
IF/ELIF nebude splněna? Na zápis použiji N-tici.

 S IF/ELIF:
 if vstup == iso: tabulka = (A,B), (B,C)
 elif vstup == latin2: tabulka = (D,E), (F,G)

 Bez IF/ELIF:
 iso = (A,B), (B,C)
 latin2 = (D,E), (F,G)

 Můj odhad: asi se to načte do paměti i s konstrukcí IF/ELIF, ale program s
konstrukcí IF/ELIF bude o něco méně pamětově náročný, protože nebudu 
definovat více proměnných ale jen jednu tabulka a možná ani to ne, protože
pokud si to Python potřebuje zapamatovat vše naráz, tak bude mít v paměti 
nekolik krát proměnnou tabulka, dle našeho příkladu 2 krát. Ale dost 
filozofie, programování je o nečem jiném, jak to tedy funguje?

 Rěším to, protože každá tabulka by měla obsahovat něco kolem 1800 znaků.



Odpovím pro CPython, jiné interpretery jazyka Python se můžou chovat jinak :
)

Konstantní literály, tedy konstanty zapsané přímo v kódu, jako třeba
((A,B), (B,C)) výše, jsou součást zkompilovaného modulu, a do
paměti se načtou s ním. Je jedno, jestli se pak použijí nebo
nepoužijí. Proměnné v Pythonu jsou jen jména (pro C-čkaře: ukazatele),
která se přiřazují hodnotám.
Je možnost to dát do zvláštních modulů:

if vstup == 'iso':
from tabulka_iso import tabulka
elif vstup == 'latin2':
from tabulka_latin2 import tabulka

a v tomhle případě by se načetl jen daný modul a data v něm. Nebo
(většinou lepší varianta) se dají data dát do datového souboru a
přečíst pomocí `csv` nebo `json` ze std. knihovny.
 

Díky za odpověď a navedení! :) Uvidím, kolik si ty tabulky na Amize budou 
brát paměti a dle toho se zařídím :).



Lisiak4
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz