[python] vlakna,cpu

Jirka Vejrazka jirka.vejrazka na gmail.com
Čtvrtek Listopad 18 17:00:45 CET 2010


Nijak :(

  Pythin pouziva GIL, neboli Global Interpreter Lock. Kvuli
komplikacim se zamykanim vnitrnich struktur Pythonu je to udelane tak,
ze se vlakna stridaji a nebezi paralelne. Je to znamy problem Pythonu,
ale nikdo ho zatim nevyresil.

  Zkus se mrknout na modul processing, ktery misto vlaken pouziva
procesy ale jinak je jeho pouziti skoro stejne jako u threadingu,
samozrejme pak neni (jednoduchy) pristup ke sdilenym datum. Tusim, ze
modul procesisng do jiste miry obchazi GIL, ale ted s nejsem na 100%
jisty a nemam pristup k PC, tak si to radsi dohledej.

   Jirka

On 18/11/2010, vepro <p.zlamal at gmail.com> wrote:
> 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 at py.cz
> http://www.py.cz/mailman/listinfo/python
>


Další informace o konferenci Python