Я полагаю, это потому, что фактическое воспроизведение музыки происходит в другом потоке, поэтому иногда оно не заканчивается, начиная с того момента, когда вы в первый раз звоните get_busy()
.
Если это так, кажется,ошибка в pygame или SDL_mixer (которую использует pygame.)
В качестве альтернативного способа проверки завершения музыки, вы можете получить pygame, чтобы дать вам событие, когда музыка заканчивается, и проверить это.Как это:
pygame.mixer.music.set_endevent(pygame.USEREVENT)
quit = False
while not quit:
clock.tick(FRAMERATE)
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit = True
if event.type == pygame.USEREVENT:
print "Music ended"
quit = True