[python] asynchronni programovani, stavovy stroj

slush slush na centrum.cz
Sobota Srpen 2 14:46:28 CEST 2008


Diky za reakci. Je pravda, ze takovy model jsem nebral v uvahu (ikdyz ho
znam). V konecnem dusledku mi mozna prijde slozitejsi na vyladeni nez
implementovat tu asynchronni verzi a pritom neprinasi zadny benefit navic.

Samozrejme pokud neni omezenim pocet paralelne otevrenych socketu. Zkousel
jsem udelat cca 1500 socket pripojeni na servery (z bezne klientske stanice)
a zadneho zatizeni jsem si nevsimnul. Kazdopadne netvrdim, ze to je
nejcistsi reseni...

Marek

2008/8/2 superman <feed na centrum.cz>

>
> Ano, přehlédnul. Tento problém se řeší velmi často, a je na něj krásné
> standardizované řešení. To řešení spočívá v tom, že se určí maximální
> počet běžících threadů - řekněme třeba 50. Pak se vytvoří tzv. thread
> pool, tedy objekt, který spustí 50 threadů a drží je v pozastaveném
> stavu. Všechny potřebné úkoly se řadí do fronty operací, které pak
> přebírá thread pool a přiřazuje jim jednotlivé thready. Tedy pokud je
> potřebných operací méně, než max. počet threadů, některé thready spí a
> zbylé vykonávají operace. Pokud je operací více, než threadů, pak
> všechny thready vykonávají operace až do max. počtu, tedy v tomto
> případě do 50 a zbylé čekají ve frontě. Jakmile jakákoli operace skončí,
> volný thread vybere z fronty další operaci a začne jí vykonávat.
>
> Tímto dosáhnete max. rychlosti a vysokého výkonu. Za prvé se zbavíte
> režie vytváření a rušení threadu - všech 50 threadů vytvoříte najednou a
> stále existují v thread poolu. Za druhé - příliš velký počet threadů
> naráz je neefektivní a režie operačního systémů při přepínání kontextu
> obrovského množství threadů sežere značnou část výkonu. Takže při
> rozumně zvoleném počtu threadů probíhají operace nejrychlejší možnou
> rychlostí - vyšší, než kdyby bylo threadů méně, nebo více. Za třetí -
> snažší synchronizace thread díky tomu, že je máte najednou pod kontrolou
> v jednom objektu - synchronizační akce bývají výrazně zjednodušeny.
>
> Psal bych víc, ale pro základní představu to stačí.
>
> Miloslav Ponkrác
>
>
>
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://www.py.cz/pipermail/python/attachments/20080802/c4299055/attachment.htm 


Další informace o konferenci Python