[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