2012-12-18 18 views
5

Aşağıdaki çok basit bir örneği denemek, bilgisayarımın durmasına neden oluyor, böylece yeniden başlatmam gerekiyor.Çok işlemcili modül kullanan basit bir oyuncak örneği bilgisayar çöküyor

import math 
from multiprocessing import Pool 

pool = Pool(processes=2) 
print pool.map(math.sqrt, [1,4,9,16]) 

Ben çift çekirdekli işlemci (i5 2467m) kullanıyorum bu yüzden yukarıdaki ince olacağını düşündüm: Görev yöneticisini kontrol etme "python.exe" görevlerin yüzlerce gösterir.

Biraz farklı bir soruna neden olan processes=1 ayarlamayı denedim: görev hiçbir zaman bitmez ancak bilgisayarımın donmasına neden olmaz.

Herhangi bir fikrin var mı?

cevap

8

multiprocessing ile ilk kez oynadığımda aynı sorunu yaşadım. Havuz oluşturma kodunu if __name__ == '__main__' bloğuna sarın. Ne oluyor

import math 
from multiprocessing import Pool 

if __name__ == '__main__': 
    pool = Pool(processes=2) 
    print pool.map(math.sqrt, [1,4,9,16]) 

altişlem oluşturulduğunda, sizin modül SIRKESIZ olmanın ve sonsuz özyinelemede havuz nesil kodu rerunning olmasıdır. if bloğu ile, yumurtlama kodu sadece modülün ana örneğinde çalışacaktır.

+0

Hangi İşletim Sistemindesiniz? – mgilson

+0

Teşekkür ederiz. Mükemmel bir şekilde sabitlendim (7. galeriyi kullanıyorum). – iRoygbiv

+0

@mgilson Windows'ta yaşıyorum. –