Я использую StringIO для потоковой передачи музыкальных данных, но кажется, что когда я запускаю pygame.mixer.music.load(), мое приложение не закрывается. Даже если я использую close():
def PlaySong(self, song_id):
song = StringIO.StringIO(resp.read())
self.pygame.mixer.music.load(song)
....
Функция вернется, но приложение придется убить. Если я сохраню ответ в файл, а затем загружу имя файла, он закроется. Кто-нибудь может помочь? Я не хочу использовать локальное хранилище.
Больше информации. Я сделал strace как при открытии из файла, так и при использовании stringio, strace будет корректно завершаться для обоих экземпляров. Следы выглядят чистыми.
Рабочий код:
def playsong():
mp3 = "/home/adam/Documents/pinyin/pinyinchart_win/pinyin/zuo2.mp3"
#with open(mp3, "rb") as outfile:
# song = outfile.read()
#io = StringIO.StringIO(song)
pygame.init()
pygame.mixer.music.load(mp3)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(50)
#io.close()
#outfile.close()
Не рабочий код:
def playsong():
mp3 = "/home/adam/Documents/pinyin/pinyinchart_win/pinyin/zuo2.mp3"
with open(mp3, "rb") as outfile:
song = outfile.read()
io = StringIO.StringIO(song)
pygame.init()
#pygame.mixer.music.load(io)
pygame.mixer.music.load(mp3)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(50)
io.close()
outfile.close()
close()
для объектаresp
? Как выйти из приложения? - person sloth   schedule 18.10.2012pygame.quit()
до того, как ваше приложение закроется. - person Whatang   schedule 19.10.2012