[python] multiprocess manager
Tomas Pelka
tompelka na gmail.com
Čtvrtek Červenec 29 19:36:43 CEST 2010
On 07/27/2010 09:20 AM, Tomas Pelka wrote:
>
>
> On 07/27/2010 08:49 AM, Jirka Vejrazka wrote:
>> Ahoj,
>>
>> me to po ranu moc nemysli, tak me ber s rezervou :)
>>
>>> worker = w.Worker() #TOHLE FUNGUJE JAK MA
>>
> Po tomto ma jeste nasledovat jeden radek
> worker.go('eth2', 'tcp port 22') # napriklad
>
>> Urcite? Neber to ve zlem, ale mas jistotu, ze to startuje ten
>> spravny Worker? Uz je to dlouho, co jsem si s timhle hral, ale koukal
>> jsem ted do nejakeho stareho kodu a tam jsem nasel neco, co by u tebe
>> vypadalo asi takhle:
>>
>>> from Worker import Worker
>>> class WorkerManager(BaseManager):
>>> pass
>>> WorkerManager.register('Worker', Worker) # ma 2 parametry!
>>
No to by ale znamenalo ze Worker musi byt nekde definovany, nebo
importovany (from worker import Worker) a pak by to volani metod na
remote objektech ztracelo smysl. Jinak se to chova stejne v obou
pripadech, tedy WorkerManager.register('Worker', Worker) i
WorkerManager.register('Worker').
>> Navic nikde nevidim, ze bys volal WorkerManager.start(), vypada to,
>> ze cely multiprocessing vlastne nefunguje, budes se na to muset jeste
>> trochu podivat. Vim, ze to neni uplne skvela rada, ale zacni od
>> mensich veci a vyzkousej si na nich jak multiprocessing funguje,
>> sniffovani paketu mezi ne nepatri :-) Rikam to jenom proto, ze jsem
>> prosel stejnou cestu jako ty a nakonec jsem skoncil u neceho radove
>> slozitejsiho nez jsem cekal.
>>
>> Par poznamek na okraj:
>>
>> - mel jsem podobne problemy jako ty, neslo mi volat terminate() na
>> vzdalenem procesu. Nakonec jsem skoncil se specialni "ridici frontou",
>> kam jsem tomu vzdalenemu procesu poslal vzkaz, aby se ukoncil sam. To
>> fungovalo.
>> - myslim, ze definovat QueueManager ve Worker.__init__() je spatne
>> jak koncepcne, tak technicky
Muzu pozadat o male vysvetleni. Proc myslis, ze koncepce je spatna? Bylo
by lepsi predavat frontu jako parametr?
>> (nejsem si jisty, jestli to
>> multiprocessing zvladne, spustit manager teoreticky na jinem stroji).
>> Navic se zda, ze mu taky chybi start().
Start tady neni treba protoze se jedna jen o objekt fronty a ne proces.
>
> Ano start() chybi, mas pravdu, viz vyse.
>
>> - mrkni se na PEP08 ;-)
> Porad si ten code style nemuzu zazit :)
>>
>> Jak jsem psal, rano neni moje nejlepsi doba, tak me ber s rezervou
>> ;-)
>>
>> Jirka
>> _______________________________________________
>> Python mailing list
>> Python na py.cz
>> http://www.py.cz/mailman/listinfo/python
>
Diky za podnetne nazory.
--
Tomas Pelka
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20100729/e5b11ee5/attachment.html>
Další informace o konferenci Python