在kivy中卸载音频样本

问题描述:

音频卸载似乎并没有真正释放内存,至少就Linux而言是最重要的。反复加载和卸载会导致内存使用率上升。我错过了什么明显的东西?在kivy中卸载音频样本

from __future__ import print_function 
import kivy 
kivy.require('1.9.0') # replace with your current kivy version ! 

from kivy.app import App 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.button import Button 
from kivy.core.audio import SoundLoader 

class SoundTest(BoxLayout): 

    def __init__(self, **kwargs): 
     super(SoundTest, self).__init__(**kwargs) 
     button = Button(text='Play sound') 
     self.add_widget(button) 
     button.bind(on_release=self.PlaySound) 

    def PlaySound(self, widget): 
     snd = SoundLoader.load('test.ogg') 
     snd.bind(on_stop=self.UnloadSoundWhenDone) 
     snd.play() 
     print ("play", snd) 

    def UnloadSoundWhenDone(self, snd): 
     print ("unload", snd) 
     snd.unload() 


class MyApp(App): 

    def build(self): 
     return SoundTest() 

if __name__ == '__main__': 
    MyApp().run() 

更新:这似乎是使用kivy.core.audio.audio_gstplayer.SoundGstplayer后端。

实际上,内存似乎不会无限期地向上蔓延,所以虽然SoundGstplayer似乎比SDL2后端分配的本身要多得多,但这可能如预期的那样。

del an_obj 

试着删除实际的对象,也许?我不完全确定你在做什么。

+0

不幸的是没有运气。我在UnloadSoundWhenDone中添加了“del snd”,但内存使用量仍在增加。 – TimSC