[python] vlakna,cpu

vepro p.zlamal na gmail.com
Pátek Listopad 19 17:36:40 CET 2010


Sdilene promenne pouzivam takto:

mgr=multiprocessing.Manager()
pointA=mgr.list()
voxelGrid_list=mgr.list()
storage=mgr.dict()
global_index=mgr.list([0])

Tyto promenne pak do jednotlivych procesu vlozim pri jejich zakladani 
jako argument. Jednotlive procesy pak jen do techto promennych pridavaji 
hodnoty (append) a proto jsem nepuzil zadny zamek. Jediny zamek co 
pouzivam je v ramci kodu citajici tri instrukce, kde jednotlive procesy 
inkrementalne zvysuji hodnotu promenne. Dle teto promenne se pak uklada 
hodnota do pole, tak ze index bude odpovidat teto zvysovane promenne.

                         self.lock.acquire()
                         
self.storage[unicode(self.index)]=self.global_index[0]
                         
self.pointA.append([self.local_x,self.local_y,self.local_z])
                         self.global_index[0]=self.global_index[0]+1
                         self.lock.release()

To je snad jedina cast, kdy muze jeden proces ovlivnovat druhy.
Petr

On 11/19/2010 05:03 PM, Jirka Vejrazka wrote:
>> duvod, proc tomu tak je? Mozna je problem s tim, ze v procesech pouzivam
>> sdilene promenne, ale bez toho se proste neobejdu.
>>      
>    To zalezi na tom, jake sdilene promenne pouzivas a jak moc na sebe
> jednotlive procesy "cekaji". Muzes to nejak priblizit, pripadne sem
> hodit kus kodu?
>
>    Kdyby byl zajem, muzu dohledat zajimave video z jednoho PyConu
> (myslim, ze australskeho), kde jeden clovek detailne popisoval co se
> deje v Pythonu na jednom a vice jadrech, ale asi ti to k reseni
> problemu moc nepomuze.
>
>     Jirka
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>    



Další informace o konferenci Python