在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
试着删除实际的对象,也许?我不完全确定你在做什么。
不幸的是没有运气。我在UnloadSoundWhenDone中添加了“del snd”,但内存使用量仍在增加。 – TimSC