Thread View: pl.comp.lang.python
3 messages
3 total messages
Started by Gallus Anonimus
Fri, 04 Dec 2009 09:45
Python 3.1 multiprocessing katastrofa :)
Author: Gallus Anonimus
Date: Fri, 04 Dec 2009 09:45
Date: Fri, 04 Dec 2009 09:45
26 lines
1786 bytes
1786 bytes
Witam.
Takie mam pytanko, czy ktoś próbował uruchomić poniżczy przykład z
helpa do pythona 3.1? Moduł Multiprocessing ma zastąpić threading
poprzez odpalenie kilku pythonów i równoległe uruchamianie zadań.
Brzmi fajnie, postanowiłem sprawdzić i taki oto skrypcik znaleziony
w pomocy dołączonej to pythona 3.1 odpaliłem:
from multiprocessing import Pool
p = Pool(5)
def f(x):
return x*x
p.map(f, [1,2,3])
Efekt skryptu jest taki, że komputer mi umarł ;-)
Na początku nie wiedziałem co się stało, po prostu zatkało sprzęta,
ale po drugiej próbie już wiedziałem - skrypt wpada w jakąś szaloną
pętlę uruchamiania kolejnych pythonów i kiedy już mam ich
uruchomionych ponad 750, wówczas mój windows nie jest
w stanie nawet wyświetlić listy procesów. Przy około 1000 pythonów
uruchomionych równolegle pomaga wyłącznie sprzętowy reset.
Czy wy też tak macie? To chyba nie jest zamierzony sposób
działania tego przykładu?
Re: Python 3.1 multiprocessing katastrofa :)
Author: Łukasz Rekucki
Date: Fri, 04 Dec 2009 13:54
Date: Fri, 04 Dec 2009 13:54
49 lines
3074 bytes
3074 bytes
On Dec 4, 10:45 am, Gallus Anonimus <gallusnnms@na_gmailu.com> wrote: > Witam. > Takie mam pytanko, czy ktoś próbował uruchomić poniżczy przykład z > helpa do pythona 3.1? Moduł Multiprocessing ma zastąpić threading > poprzez odpalenie kilku pythonów i równoległe uruchamianie zadań. > Brzmi fajnie, postanowiłem sprawdzić i taki oto skrypcik znaleziony > w pomocy dołączonej to pythona 3.1 odpaliłem: > > from multiprocessing import Pool > p = Pool(5) > def f(x): > return x*x > > p.map(f, [1,2,3]) > > Efekt skryptu jest taki, że komputer mi umarł ;-) > > Na początku nie wiedziałem co się stało, po prostu zatkało sprzęta, > ale po drugiej próbie już wiedziałem - skrypt wpada w jakąś szaloną > pętlę uruchamiania kolejnych pythonów i kiedy już mam ich > uruchomionych ponad 750, wówczas mój windows nie jest > w stanie nawet wyświetlić listy procesów. Przy około 1000 pythonów > uruchomionych równolegle pomaga wyłącznie sprzętowy reset. > > Czy wy też tak macie? To chyba nie jest zamierzony sposób > działania tego przykładu? Ten przykład jest podany jako do wpisania w trybie interaktywnym. W innym przypadku, to schemat wygląda tak, że każde z tych 5-ciu nowych interpreterów importuję plik z tym kodem, co oczywiście tworzy w każdym z nich kolejne 5, itd. Zostało to opisane w dokumentacji i rozwiązaniem jest umieszczenie kodu, który mógłby uruchamiać nowe procesy po "if __name__ == '__main__'" (co ogółem jest dobrą praktyką): http://docs.python.org/3.1/library/multiprocessing.html#windows Słowem: from multiprocessing import Pool def f(x): return x*x if __name__ == '__main__': p = Pool(5) print(p.map(f, [1,2,3])) Działa bez zarzutu.
Re: Python 3.1 multiprocessing katastrofa :)
Author: Gallus Anonimus
Date: Fri, 04 Dec 2009 15:03
Date: Fri, 04 Dec 2009 15:03
23 lines
1730 bytes
1730 bytes
On Fri, 4 Dec 2009 05:54:01 -0800 (PST), Łukasz Rekucki <lrekucki@gmail.com> wrote: >Ten przykład jest podany jako do wpisania w trybie interaktywnym. W >innym przypadku, to schemat wygląda tak, że każde z tych 5-ciu nowych >interpreterów importuję plik z tym kodem, co oczywiście tworzy w >każdym z nich kolejne 5, itd. Zostało to opisane w dokumentacji i >rozwiązaniem jest umieszczenie kodu, który mógłby uruchamiać nowe >procesy po "if __name__ == '__main__'" (co ogółem jest dobrą >praktyką): > >http://docs.python.org/3.1/library/multiprocessing.html#windows > >Słowem: >> >Działa bez zarzutu. Aaa to dziękuję za info, tak myślałem że błąd mam w rozumowaniu, bo nie wierzyłem że wypuszczono by takiego buraka w kodzie :) Muszę dokładniej czytać...
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads