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.
>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�...