py在交互式python shell中运行良好,但在脚本中则不行

py在交互式python shell中运行良好,但在脚本中则不行,python,mplayer,Python,Mplayer,文件在python shell中正常播放。脚本中的相同代码没有播放,但持续时间正确。怎么了 >>> import mplayer >>> p = mplayer.Player() >>> p.loadfile('announce_vlad.wav') 脚本: import mplayer p = mplayer.Player() p.loadfile('announce_vlad.wav') print p.length print p.i

文件在python shell中正常播放。脚本中的相同代码没有播放,但持续时间正确。怎么了

>>> import mplayer
>>> p = mplayer.Player()
>>> p.loadfile('announce_vlad.wav')
脚本:

import mplayer
p = mplayer.Player()
p.loadfile('announce_vlad.wav')
print p.length
print p.is_alive()
脚本输出:

5.955873
True

播放器似乎在后台运行,并在脚本退出后立即停止。(在pythonshell中,这通常不是问题,因为shell在等待输入时将保持打开状态。)

为了防止播放机过早停止,您需要以某种方式保持脚本运行,直到播放机完成。一种方法是,因为您已经知道正在播放的剪辑的持续时间,所以可以将
sleep()
作为持续时间


(可能有更好的方法可以做到这一点,但遗憾的是,我对mplayer还不太熟悉。您可能想查看mplayer文档,看看是否有什么方法可以让播放器在完成播放后唤醒您的脚本。)

您如何运行脚本?您是从IDE运行它,还是从命令行运行它,例如使用python my_script.py或其他方式?在同一控制台中,在播放器完成之前退出是正确的。谢谢。啊,秒:)
而p.stream\u time\u pos
这样的繁忙循环将不必要地浪费CPU时间;基本上,您将有一个CPU核心以100%的速度运行,什么也不做,只是反复询问播放器是否已经完成,可能每秒数十万次。至少在循环中加入
sleep(0.1)
之类的东西,以将CPU使用率降低到每秒仅10个查询。
sleep(p.length)
对我来说很有效,而不必使用循环。记得要先从时间导入睡眠