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