2016-05-08 9 views
12

Birkaç bağımsız hesaplamayı (aynı verilerden okumakla birlikte) çalıştırmaya çalışıyorum. Ben Ubuntu üzerinde çalıştırdığınızda Kodum değil hatası alıyorum Pencereler (windows server 2012 R2) üzerinde ancak, çalışır:çok işlemcili.Jupyter dizüstü bilgisayardaki yuva linux üzerinde çalışıyor ancak windows'ta çalışmıyor

'module' object has no attribute ...

Ben çekirdek konsolunda görünür (multiprocessing.Pool kullanmayı deneyin, Not Defteri'nde çıktı olarak değil)

(Ayrıca havuzu oluştururken AFTER işlevini tanımlama hatasını zaten yaptım ve ayrıca düzeltdim, sorun değil).

Bu örneklerin en basit bile olur:

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

Ben modülü almak mümkün olması gerektiğini biliyorum (ve dizüstü çalışırken bunun nasıl hiçbir fikrim yok) ve ben 'in haberi IPython.Parallel duyuyor, ancak hiçbir doküman ya da örnek bulamadık.

Herhangi bir çözüm/alternatif en çok memnuniyetle karşılanacaktır.

cevap

1

Tam bir cevabım olmadığı için bunu bir yorum olarak gönderirim, ancak neler olduğunu anladığımda değiştiririm.

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) 

Bu, çalışır. Bu sorunun cevabının here olduğuna inanıyorum. Kısacası, alt süreçler alt süreçler olduklarını bilmiyorlar ve ana senaryoyu yinelemeli olarak çalıştırmaya çalışıyorlar. Çok doğru

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

:

Bu

bize aynı çözümü verir bana verilen ediyorum hatasıdır. Aslında, dokümanlar Windows'da çok işlemcili birkaç gotchas heceleyerek. Https://docs.python.org/2/library/multiprocessing.html#windows sayfasına bakın. – tdelaney

İlgili konular