2016-03-18 19 views
1

Basit bir sorum var.RAM'in doygunluğa yakın olması durumunda bir Python işlemini (Windows'ta Anaconda) nasıl öldürebilirsiniz?

Genellikle büyük veri kümelerine sahip pandalarda karmaşık hesaplamalar yapıyorum. Bazen python, RAM'i her şeyin doygun olduğu noktaya kadar tutar ve bilgisayarım temelde çöker. Bir windows makinesinde Anaconda dağıtımını kullanıyorum.

RAM kullanımı bu eşiğin üzerine çıkarsa, çekirdeğin yeniden başlatılması veya işlemin sonlandırılması gerektiği gibi bir eşik (% 98 demek) ayarlanabilir mi?

cevap

1

Unix sistemlerinde nispeten kolay görünüyor (https://docs.python.org/2/library/resource.html#resource.setrlimit). Ancak, windows sistemleri için bellek miktarını sınırlandıran dahili bir python yolu yoktur. Daha sonra Windows API'ye güvenmeniz gerekecektir. this answer'dan anlayabildiğim kadarıyla, Job object'u oluşturmanın en iyi yolu olur ve python işlemiyle ilişkilendirirsiniz. Daha sonra işlemin belleğini sınırlamak için JOB_OBJECT_LIMIT_JOB_MEMORY kullanırsınız. Ya da muhtemelen SetProcessWorkingSetSize kullanarak uzaklaşabilirsiniz.