[python] multiprocess manager

Jirka Vejrazka jirka.vejrazka na gmail.com
Úterý Červenec 27 08:49:16 CEST 2010


Ahoj,

  me to po ranu moc nemysli, tak me ber s rezervou :)

> worker = w.Worker() #TOHLE FUNGUJE JAK MA

  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!

 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 (nejsem si jisty, jestli to
multiprocessing zvladne, spustit manager teoreticky na jinem stroji).
Navic se zda, ze mu taky chybi start().
 - mrkni se na PEP08 ;-)

  Jak jsem psal, rano neni moje nejlepsi doba, tak me ber s rezervou ;-)

    Jirka


Další informace o konferenci Python