2016-04-07 19 views
0

Python 3.4 ve Tkinter ile bir uygulama yaptım. Uygulamam birkaç (3-5) iş parçacığı çalıştırıyor ve her iş parçacığı aşağıda.Windows Görev Yöneticisi: Python uygulaması bellek kullanımı artırma

    recvfrom() soketinden mesajı almak için bir
  1. sonsuz döngü (UDP) mesajı görüntüler ve

Ben pencerelerde gömülü işletim sistemi benim uygulamasını kullanabilirsiniz bir dosyaya yazma

  • sonsuz döngü hangi XP, dayanır ve ben benim uygulama uzun süre (belki daha fazla ay) kapatmadan çalıştırmak istiyorum çünkü TaskManager, ile bellek kullanımını izlemek.

    Daha sonra, bir sorun (fiziksel)

    Bellek kullanımı giderek artmaktadır, ama bazen büyük ölçüde azalmasıdır. Genel olarak iyi görünüyor.

    Ancak Sanal Bellek Boyutu (VMSize) uzun vadeli görünümle artmaktadır. Örneğin, uygulamayı başlattığımda VMSize 26 MB'dı. ve ertesi gün, 29MB, haline gelir ve ertesi gün, 32MB olur. Bazen biraz artar, bazen biraz azalır (ör. 20KB). ama genel olarak yukarı doğru eğilim. Bu çok büyük bir hacim değil ama "artan" beni rahatsız ediyor.

    GarbageCollection, her 3 saatte bir çağrılacak şekilde kodumda gc.collect() kodunun 'a eklenmesi için yardımcı olabileceğini umuyorum. Ancak hiçbir şey değişmedi ve yazdırma (gc.collect()) her zaman 0 (uygulamanın kendisinin başlatılmasından hemen sonra hariç) gösterdi.

    Bu bellek sızıntısı mı?

    Del() öğesinin tanımını okudum ve başvuru döngüsü Python, 'da bellek sızıntısına neden olabilir, ancak hiçbir zaman del() öğesini kendim tanımlamam.

    Önceden teşekkür ederiz.

  • cevap

    0

    Nedeni kendim keşfettim, bu yüzden burada yazdım ve soruyu kapatın.

    Bellek sızıntısının nedeni, birden çok iş parçacığından daha titrek işlevler çağırıyordu. tkinter iş parçacığı güvenli değil, bu yüzden kuralını ihlal ediyordum.

    Programımı değiştirdim, böylece yalnızca ana iş parçacığı tkinter işlevi daha sonra bellek sızıntısı gitti.

    Teşekkür ederiz.