StringIO を使用して音楽データをストリーミングしていますが、pygame.mixer.music.load() で実行するとアプリケーションが終了しないようです。close() を使用しても:
def PlaySong(self, song_id):
song = StringIO.StringIO(resp.read())
self.pygame.mixer.music.load(song)
....
関数は戻りますが、アプリケーションを強制終了する必要があります。応答をファイルに保存してからファイル名をロードすると、閉じます。誰でも助けることができますか?ローカル ストレージを使用したくありません。
より詳しい情報。ファイルから開くときと stringio を使用するときの両方で strace を実行すると、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()