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
[email protected]
http://www.py.cz/mailman/listinfo/python
_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python