[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