Python中终止multiprocessing启动的playsound进程后音频仍播放
问题原因解析
在Ubuntu 22.04环境里,playsound模块底层是靠外部音频播放进程(比如GStreamer相关组件或ffplay)来实际播放音频的。你用multiprocessing.Process启动的只是运行playsound函数的Python子进程,这个子进程的作用只是调用外部工具启动播放,真正负责出声的是和Python进程完全独立的外部进程。
当你执行p.terminate()时,你只终止了那个运行playsound的Python子进程,但已经启动的外部音频进程不会跟着终止——它不受Python进程的管控,所以音频会一直播放到文件结束。
至于启动进程后立刻执行terminate()音频不播放,是因为此时playsound还没来得及完成外部播放进程的启动,自然就没有声音输出。
额外说明
playsound的跨平台实现差异很大:Windows下它直接调用系统API,终止Python进程会连带停止播放;但Linux下依赖外部工具,就会出现这种“Python进程停了,音频还在响”的情况,这也是你参考的方案在你的环境里失效的核心原因。
内容的提问来源于stack exchange,提问作者DerGrillerich
相关产品推荐
相关产品推荐

