abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Sledujte AbcLinuxu.cz na:
facebook favicon logo  Facebooku twitter favicon logo  Twitteru,   identi.ca favicon logo  Identi.ca,   rss logo  RSS
Rozšířené hledání
×
dnes 07:36 | Nová verze
Bylo oznámeno vydání verze 8 na Gentoo postavené distribuce Sabayon. Naleznete v ní Linux 3.2 (v repozitářích je také experimentální „Fusion“ kernel), podporu btrfs, GNOME 3.2.2 (Cinnamon v repozitářích), KDE 4.7.4, Xfce 4.8, LibreOffice 3.4.4, Java 7, opravy chyb a další novinky. Zdroj: H-Online.
Tomáš Heger (geckon) | Komentářů: 0
dnes 02:36 | Nová verze
Sedmnáctková řada webového prohlížeče Google Chrome byla prohlášena za stabilní. Dle oznámení bylo ve verzi 17.0.963.46 opraveno 20 bezpečnostních chyb. Polovina z nich byla detekována pomocí nástroje AddressSanitizer. Nová řada především rozšiřuje aplikační programové rozhraní prohlížeče (API). Už při zadávání webové adresy dopředně načítá vysoce pravděpodobné stránky. Varuje před nebezpečnými soubory. Nejviditelnější změnou je zmizení "+" z tlačítka pro otevření nové karty.
Ladislav Hagara | Komentářů: 2
včera 13:24 | Komunita
Byla spuštěna možnost registrovat se na letošní ročník konference InstallFest, který proběhne o víkendu 3. a 4. března na Strahově v Praze. Registrace je nepovinná, přijít můžete i bez ní. Podtématem tohoto ročníku je programování a hardware, program naleznete na webu konference.
Tomáš Heger (geckon) | Komentářů: 0
včera 07:19 | Komunita
Carol Smith oznámila letošní osmý ročník Google Summer of Code. Podle plánu se zájemci o mentoring studentů mohou hlásit od 27. února do 9. března, studenti samotní mohou zasílat své přihlášky od 26. března. Pokud vás zajímají statistiky, podívejte se na některé údaje z minulých let.
Tomáš Heger (geckon) | Komentářů: 0
včera 06:37 | Komunita
Po zhruba roce a půl došlo k další změně na pozici Fedora Project Leader. Ze zatím neznámých důvodů na tuto pozici rezignoval Jared Smith, který ji v červnu 2010 převzal po Paulu W. Frieldsovi. Novým vedoucím projektu Fedora se stala Robyn Bergeronová z Red Hatu. Ta dříve zastávala pozici Fedora Program Manager a podílela se také na organizaci FUDConu.
Migilenik | Komentářů: 16
včera 06:23 | Komunita
Komunitní manažer Canonicalu Jono Bacon na svém blogu vyzývá členy komunity kolem Ubuntu, aby organizovali akce v rámci Ubuntu Global Jam, který proběhne od 2. do 4. března. Podrobnější informace o této události naleznete na webu loco.ubuntu.com nebo na Ubuntu wiki.
Tomáš Heger (geckon) | Komentářů: 0
včera 06:18 | Nasazení Linuxu
Společnost SDG Systems oznámila vydání „terénního“ tabletu Yuma. Ten pochází z modelové řady Trimble, jejíž součástí je řada dalších „handheld“ zařízení s Linuxem. Zařízení jsou určena pro terénní sběr dat a vojenské a průmyslové nasazení, kvůli čemuž splňují i americký vojenský standard MIL-STD-810F.
Migilenik | Komentářů: 0
7.2. 22:22 | Zajímavý software
Webový prohlížeč Chrome v budoucnu asi nebude mít podporu pro online ověřování, zda nebyl HTTPS certifikát revokován (CRL). V odkazovaném článku je uvedeno několik důvodů pro tento krok, zejména pak to, že toto ověřování nemusí být spolehlivé a zpomaluje načítání stránek. Namísto toho je navrhována distribuce revokovaných klíčů přes aktualizační mechanismus prohlížeče.
Luboš Doležel (Doli) | Komentářů: 5
7.2. 22:18 | Zajímavý projekt
Grafický server Wayland, možný nástupce současného X Serveru, se své první stabilní verze 1.0 dočká možná už v druhé polovině tohoto roku, nejpozději však za rok. Tento plán prezentoval tvůrce Waylandu Kristian Høgsberg na konferenci FOSDEM, která během uplynulého víkendu probíhala v Bruselu.
Migilenik | Komentářů: 10
7.2. 22:17 | Pozvánky

Ve středu 15.2. od 18:00 proběhne na Fakultě informatiky Masarykovy univerzity v Brně únorové setkání Czech JBoss User Group. Tentokrát bude tématem vytváření opravdových Java EE aplikací s JBoss AS. Zahraničním hostem bude Pete Muir, který posluchačům ukáže, jak se taková aplikace vytváří. Více informací na wiki stránce akce.

Sešívaný | Komentářů: 1
Servery pro sdílení souborů (typu MegaUpload)
 (40%)
 (50%)
 (11%)
Celkem 529 hlasů
 Komentářů: 29, poslední 7.2. 08:38
Rozcestník
Reklama
Autoškola testy online Levný benzín

Python deterministický

23.7.2009 13:37 | Přečteno: 716× | Dev/Tech/Gnu

Python jakožto virtuální mašina není deterministický. Obvyklým zdrojem nahodilosti je plánování vláken, v Pythonu ale můžete mít korektní jednovláknový program, který vám dá pro jeden vstup pokaždé jiné výsledky. Může za to hashování, hash objektu může být odvozen od jeho adresy v paměti, což je (stejně jako rozvrhování vláken) neuchopitelná záležitost o kterou se stará operační systém.

Já jsem na tuhle vlastnost narazil v momentě, kdy jsem před sebou měl program, který jako klíč k hashovací tabulce používal objekt funkce. Na jiném místě program tabulku sekvenčně procházel, jenže pořadí položek se mezi jednotlivými běhy měnilo.

Existují implementace hash-tabulek, které tímto problémem netrpí. Bohužel, zmiňovaný program je tak velká a složitá bestie, že jsem musel zvolit alternativní přístup: upravit samotný interpret Pythonu.

Patch je to jednoduchý, brutální, ale funkční:

--- Python-2.4.4/Objects/object.c	2006-04-12 19:06:58.000000000 +0200
+++ /home/paskma/B/src/Python-2.4.4/Objects/object.c	2009-03-20 10:01:29.000000000 +0100
@@ -984,6 +984,8 @@
 long
 _Py_HashPointer(void *p)
 {
+	return 1;
+
 #if SIZEOF_LONG >= SIZEOF_VOID_P
 	return (long)p;
 #else

Pochopitelně tenhle hack může sabotovat výkon, v mém případě to ale program příliš nezpomalilo, tahle funkce se používá až když není zbytí.

       

Hodnocení: 80 %

        špatnédobré        

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

Komentáře

Vložit další komentář

23.7.2009 13:45 CEST
Rozbalit Rozbalit vše Re: Python deterministický
Tak a ted uz jenom zajistit, aby tenhle python nepouzivalo nic jinyho, a aby pripadneho budouciho programatora toho programu vzdycky nekdo zaskolil, ze ma pred sebou pozmenenou verzi pythonu a tudiz se tohle nechova tak, jako original.

Tim samozrejme chci rict, ze se mi tohle nezda jako dobry reseni.
23.7.2009 14:15 paskma | skóre: 12 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Python deterministický
V případě, že by s tím měl pracovat ještě někdo jiný než já, by to už dobré řešení nebylo.

Ono ty výstupy jsou korektní v každém případě, jenom trochu jiné (liší se očíslování nějakých interních polí). Determiničnost jsem potřeboval jenom kvůli ladění.
23.7.2009 14:20 Tomáš
Rozbalit Rozbalit vše Re: Python deterministický
To není dobrý nápad. Ohýbat kód interpretru kvůli ladění je fakt blbý nápad. Jak si můžeš být jistý, že to bude fungovat správně na jiné mašině se standardním Pythonem? Projdou Ti tam vůbec unittesty? Pokud potřebuješ deterministický výstup, tak si ty položky setřiď.
23.7.2009 21:20 paskma | skóre: 12 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Python deterministický
Máš špatný úhel pohledu:-). Byl to dobrý nápad, protože mi ušetřil spoustu práce. Prostě hack. Já neřeším udržovatelnost té obludy, používám ji jenom ke svým vlastním experimentům. Btw ano, funguje to i se standardním Pythonem, protože ta nedeterminističnost (to je slovo) se projeví jenom interním očíslováním nějakých položek.

Unittesty jsem nezkoušel (dobrý nápad), ale jelikož jsem neudělal nic jiného než že jsem "mírně" zhoršil vlastnost hashovací funkce, projít by to mělo.
23.7.2009 14:55 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Python deterministický
Není jednodušší použít nějaký slovník s pořadím? Třeba Recipe 107747, nebo se podívat na stav PEP 0372? Případně si seznam klíčů před iterací, ve které na pořadí záleží, seřadit?
... PS / 2 konektor pro vytvoření rovnováhy dědictví s nadstandardními funkcemi.
23.7.2009 15:22 extremni lama | skóre: 10 | blog: e_lama
Rozbalit Rozbalit vše Re: Python deterministický
presne tak, kdyz to potrebuju prochazet v urcitym poradi tak si to predem seradim. Menit kvuli tomu interpreter je pekna zvrhlost...
The enemy of my enemy is still my enemy.
23.7.2009 21:04 paskma | skóre: 12 | blog: Paskmův blog
Rozbalit Rozbalit vše Re: Python deterministický
Já myslel, že to bude z mého postu patrné. Pochopitelně existuje X čistších způsobů, jak dosáhnout cíle. Ale všechny jsou mnohem pracnější. Ten program má 90k řádek (v C by to bylo půl mega:-) a je složitý jak cukrovar, než bych přišel na to, kde všude ten slovník vyměnit/kde všude seřadit, tak bych zešedivěl (na pár místech jsem to zkoušel, ale s nevalným úspěchem).

Je to hack, proto se zde tím chlubím:-)
28.7.2009 11:55 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: Python deterministický
A nebylo by lepší zvětšit PyObject o jeden const long inicializovný counterem, a ten pak použít jako hash value? Nebyl by to jednořádkový patch ale 3-řádkový, ale aspoň by nebyl problém s výkonem. To tvoje řešení mě bolí už když se na něj podívám.
Táto, ty de byl? V práci, já debil.

Založit nové vláknoNahoru

ISSN 1214-1267   Powered by Hosting 90 Server hosting
© 1999-2011 Argonit s. r. o. Všechna práva vyhrazena.