2014-06-23 22 views
7

multiprocessing için freeze_support() kullanımı konusunda kafam karışık ve onsuz bir Runtime Error olsun. Sadece bir betik çalıştırıyorum, bir fonksiyonu veya modülü tanımlamıyorum. Hala kullanabilir miyim? Yoksa ithal ettiğim paketler kullanıyor olmalıydı? Belgeler,, bir Python betiğinde freeze_support() öğesini nereye koyar?

Here'dur.

Belirtilen sorun, paralel olarak işlem yapmayı deneyen GridSearchCV numaralı çağrıyla ilgili scikit-learn numaralı telefonun ilgili olduğunu unutmayın. Komutumun bunun için donmuş mu, yoksa (Anaconda dağıtıcısından) çağrılan bir kod mu olması gerektiğinden emin değilim. Ayrıntılar bu soruyla alakalıysa, lütfen daha spesifik olan question adresine gidin. senin multiprocessing kullanma olayı kod

+0

Komut dosyanız nasıl çalışır? – dano

+0

@dano Tamam, o zaman belirli soru geçerli. Tüm kodum orada yapıştırılmış. (Ancak bağlantı yanlış soruya işaret etti, ben düzeltdim.) Özel bir Python yorumcusunda (Spyder'dan) çalıştırıldı. –

cevap

20
Windows'un günü

tüm Yani güvende olmak

if __name__ == "__main__": tarafından korunan gerekir, ben main() işlevinde Senaryonuzun üst düzeyde şu anda tüm kodu koyardı ve sonra sadece üst seviyede bunu:

if __name__ == "__main__": 
    main() 

bu neden gerekli olduğunu bir açıklama için alt bölüm here "ana modül Güvenli ithal" bölümüne bakın. Muhtemelen freeze_support numaralı telefonu aramanıza gerek yoktur, buna dahil etmek için hiçbir şey incitmez. Eğer gelecekte bir noktada başka senaryoya dönüştürmek komut import gerekir bulursanız bu kod beklenmedik yürütülmez yüzden, zaten komut dosyaları için if __name__ == "__main__" nöbet kullanmak en iyi yöntemdir olduğunu

Not.

+0

Harika sesler, teşekkürler, nasıl koştuğunu size bildiririm, ve kabul etmekten mutluluk duyarım. –

+2

Bu, ele alınmayan tek senaryo, birisinin Süreç'ten miras kalan bir nesneyi oluşturmasıdır, yani: class myProcess (Process), bu senaryoda freeze_support'u nereye koyarsınız? – Har