2016-05-08 14 views
12

Próbuję uruchomić kilka niezależnych obliczeń (chociaż odczyt z tych samych danych). Mój kod działa, gdy uruchomię go na Ubuntu, ale nie na Windows (Windows Server 2012 R2), gdzie pojawia się błąd:multiprocessing.Pool w notebooku jupyter działa na systemie Linux, ale nie w systemach Windows

'module' object has no attribute ...

gdy próbuję użyć multiprocessing.Pool (pojawia się w konsoli jądra, nie jako wyjście w samym notebooku)

(I już popełniłem błąd definiując funkcję PO stworzeniu puli, a także poprawiłem ją, to nie jest problem).

Dzieje się tak nawet na najprostszych przykładach:

from multiprocessing import Pool 
def f(x): 
    return x**2 
pool = Pool(4) 
for res in pool.map(f,range(20)): 
    print res 

Wiem, że musi być w stanie importować modułu (i nie mam pojęcia jak to działa, gdy pracuje w notebooku), a ja "Słyszałem o IPython.Parallel, ale nie udało mi się znaleźć żadnej dokumentacji ani przykładów.

Wszelkie rozwiązania/alternatywy byłyby najbardziej pożądane.

Odpowiedz

1

Opublikowałbym to jako komentarz, ponieważ nie mam pełnej odpowiedzi, ale zmienię, gdy się zorientuję, co się dzieje.

from multiprocessing import Pool 

def f(x): 
    return x**2 

if __name__ == '__main__': 
    pool = Pool(4) 
    for res in pool.map(f,range(20)): 
     print(res) 

To działa. Wierzę, że odpowiedź na to pytanie to here. W skrócie, podprocesy nie wiedzą, że są podprocesami i starają się uruchomić rekursywnie główny skrypt.

Jest to błąd mam podane, co daje nam to samo rozwiązanie:

RuntimeError: 
     An attempt has been made to start a new process before the 
     current process has finished its bootstrapping phase. 

     This probably means that you are not using fork to start your 
     child processes and you have forgotten to use the proper idiom 
     in the main module: 

      if __name__ == '__main__': 
       freeze_support() 
       ... 

     The "freeze_support()" line can be omitted if the program 
     is not going to be frozen to produce an executable. 
+0

rację. W rzeczywistości dokumenty opisują kilka gier z obsługą wielu procesorów w systemie Windows. Zobacz https://docs.python.org/2/library/multiprocessing.html#windows – tdelaney

Powiązane problemy