Python 为什么pygame需要时间。在退出前先睡一觉播放声音?

Python 为什么pygame需要时间。在退出前先睡一觉播放声音?,python,time,pygame,Python,Time,Pygame,我只是在玩Python,玩MP3文件,突然碰到了pygame 我用它来播放音乐,但不知何故,我需要添加时间。睡眠(秒),以便播放音乐,否则当我在终端中运行时,它将立即存在 这是有原因的还是我做得不对 import pygame, time from pygame.locals import * pygame.mixer.pre_init(44100, 16, 2, 4096) pygame.init() pygame.mixer.music.load("path/to/mp3/file") p

我只是在玩Python,玩MP3文件,突然碰到了
pygame

我用它来播放音乐,但不知何故,我需要添加
时间。睡眠(秒)
,以便播放音乐,否则当我在终端中运行时,它将立即存在

这是有原因的还是我做得不对

import pygame, time
from pygame.locals import *

pygame.mixer.pre_init(44100, 16, 2, 4096)
pygame.init()
pygame.mixer.music.load("path/to/mp3/file")
pygame.mixer.music.play()
time.sleep(32)
我并没有试图创建一个游戏或任何东西,正如我提到的,我只是在用Python来解释“为什么”-pygame.mixer.music并不是真正设计成前台进程:其想法是,这是在运行其他程序时播放的背景音乐。如果用户说他们想退出游戏,如果游戏一直运行到当前背景音乐曲目结束,他们通常会感到恼火


如果您想在音乐结束前停止播放,一种低效但简单的方法是使用循环检查音乐是否完成:

while pygame.mixer.music.get_busy():
  time.sleep(0.1)
说到“为什么”-pygame.mixer.music并不是真正设计成前台进程的:其思想是,这是在其他程序运行时播放的背景音乐。如果用户说他们想退出游戏,如果游戏一直运行到当前背景音乐曲目结束,他们通常会感到恼火


如果您想在音乐结束前停止播放,一种低效但简单的方法是使用循环检查音乐是否完成:

while pygame.mixer.music.get_busy():
  time.sleep(0.1)

好吧,如果你不
time.sleep()
它会马上退出。。。这就是为什么您需要
time.sleep()
@kindall好吧,因为我也在阅读文档说它可以播放,还可以为循环传递整数,所以我有点困惑。所以,如果我想播放整个文件,我需要找到一种方法来获得音乐的长度:|@Tsuna你可能应该让它在一个单独的线程上运行,或者有一些其他的逻辑。您可以将
input()。它很可能是要启动的,然后程序进入游戏逻辑,不必担心程序会结束。@CharlesDuffy明白了,我想我不是从游戏的角度来思考的,这就是为什么我得到了自己,因为我只是想找到一个用python播放音乐的库。尝试了其他一些简单的lib,但没有成功,这让我感到困惑。非常感谢explanation@Carcigenicate谢谢你的建议好吧,如果你不
time.sleep()
它会马上退出。。。这就是为什么您需要
time.sleep()
@kindall好吧,因为我也在阅读文档说它可以播放,还可以为循环传递整数,所以我有点困惑。所以,如果我想播放整个文件,我需要找到一种方法来获得音乐的长度:|@Tsuna你可能应该让它在一个单独的线程上运行,或者有一些其他的逻辑。您可以将
input()。它很可能是要启动的,然后程序进入游戏逻辑,不必担心程序会结束。@CharlesDuffy明白了,我想我不是从游戏的角度来思考的,这就是为什么我得到了自己,因为我只是想找到一个用python播放音乐的库。尝试了其他一些简单的lib,但没有成功,这让我感到困惑。非常感谢explanation@Carcigenicate谢谢你的建议