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

Odpovedet emailem