Ahoj, může za to věc zvaná Global Interpreter Lock (GIL). V dynamickém jazyce jako je Python je totiž trochu problém korektně pracovat ve více vláknech, proto to autoři Pythonu vyřešili tímto zámkem (mutexem) - v jednom okamžiku běží Pythonový kód pouze v jednom vlákně. Přesto program může být vícevláknový a má to smysl třeba při práci se sítí, databázemi - GIL je v patřičných okamžicích uvolňován a je požadován až při předávání dat zpět do Pythonu.
Lze to obejít spuštěním programu ve více procesech. Pokud je potřeba, aby procesy mezi sebou komunikovaly, lze to řešit, i když to není tak jednoduché jako řešit to mezi vlákny. Viz modul multiprocessing, zmiňovaný ostatními. Třeba u webového nebo aplikačního serveru nemusí být důležité, aby mezi sebou jednotlivé procesy vůbec komunikovaly, pak je řešení triviální (spustit více procesů). Petr Messner 2010/11/18 vepro <p.zla...@gmail.com>: > Pratele, > Napsal jsem si aplikaci, ktera vyuziva vlakna v pythonu (modul threading). > Muzu libovolne volit od jednoho vlakna az po X vlaken. Co se deje je, ze > pokud spustim kod pouze na jednom vlakne je uloha dokoncena o dost rychleji, > nez pokud ji pustim na vice vlaknech. Tusim, ze nejaky cas zabere "rezie" > ,ale v tomto bych to nehledal. Procedury v jednotlivych vlaknech jsou temer > nezavisle (pouze jeden zamek u "sdilene" promenne). Co je mi divne a myslim, > ze v tom je zakopan pes, ze vyuziti procesoru je zhruba stejne (100%) pro > ulohu bezici v jednom, tak i ve vice vlaknech. Vypada to tak, ze vice vlaken > vyuziva pouze jedno jadro procesoru (onech 100%), tak jako jednovlaknovy > proces. Je tedy nutne nejak pythonu "rici", ze ma vyuzivat vice jader pro > vlakna? > Dekuji za pripadnou radu > Petr > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python > _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python