2012-01-16 23 views
5

Ben yürütmek için yaklaşık 10 dakika sürer bir Python programı var. Bu yüzden hızlandırmak için multiprocessing den Pool kullanın: Bu sadece gelen, çok daha hızlı çalışırKalıcı Süreçler Mesaj Python Havuzu

from multiprocessing import Pool 
p = Pool(processes = 6) # I have an 8 thread processor 
results = p.map(function, argument_list) # distributes work over 6 processes! 

. Tanrı Python'u korusun! Ve öyle olacağını düşündüm.

Ancak, bunu her yaptığımda, işlemlerin ve bunların büyük ölçüde boyutlandırılmış durumunun, p kapsam dışı kalsa bile; etkin bir şekilde, bir bellek sızıntısı yarattım. Sistem Monitörü uygulamasında süreçler, bu noktada CPU kullanmadan Python süreçleri olarak görünüyor, ancak durumlarını korumak için hatırı sayılır bir bellek.

Havuzun işlevleri close, terminate ve join işlevlerini içerir ve bunlardan birinin işlemleri öldüreceğini varsayardım. Havuzumu p anlatmamın en iyi yolu hangisi olduğunu bilen var mı?

Yardımlarınız için çok teşekkürler!

p.close() 
p.join() 

map() sonra işçiler sonlandırmak ve onları bunu yapmaya daha sonra beklemek gerektiğini belirtmek için: Yapmanız gereken gibi Python docs itibaren

cevap

İlgili konular