[python] Fork - problém s přístupem k rodičovské proměnné

Petr Messner petr.messner na gmail.com
Úterý Červen 30 12:05:02 CEST 2009


V půlce programu si to klidně forkneš a očekáváš, že z potomka si v
pohodě můžeš měnit proměnné v rodičkovském procesu, navíc z obou
procesů saháš do GTK? No fuj :-) GTK je myslím thread-safe (po nějaké
inicializaci, pokud si dobře vzpomínám), ale že by i
multiprocess-safe, to pochybuji :-)

Doporučuji použít místo podprocesů vlákna nebo zařídit nějakou
meziprocesovou komunikaci - nejjednodušeji asi rouru/socketpair - tak
aby s GUI manipuloval jen jeden proces.

PM

2009/6/30 Filip Bartmann <filbar na centrum.cz>:
> V této části kódu:
> ----------------------------------------------------------------------------------
> def __init__(self):
>                self.mixer=alsa.Mixer();
>                if self.mixer.getmute()[0]==0:
>                        self.icon=gtk.status_icon_new_from_stock(gtk.STOCK_YES);
>                else:
>                        self.icon=gtk.status_icon_new_from_stock(gtk.STOCK_NO);
>
>                pid=os.fork();
>                if pid==0:
>                        while True:
>                                mixer=alsa.Mixer();
>                                if mixer.getmute()[0]==0:
>                                        print "UNMUTED";
>                                        self.icon.set_from_stock(gtk.STOCK_YES);
>                                elif mixer.getmute()[0]==1:
>                                        print "MUTED";
>                                        self.icon.set_from_stock(gtk.STOCK_NO);
>                                time.sleep(1);
>
>                self.icon.connect("popup-menu",self.show_controls);
> ----------------------------------------------------------------------------------
>
> mám problém v přístupem k self.icon v potomkovi. Na CMDLině mi to sice
> správně hlási MUTED/UNMUTED ale ikona se nemění. Nevíte kde mám chybu?
>
> Za rady předem děkuji.
>
> Filip Bartmann
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>


Další informace o konferenci Python