You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python调用winsound播放音频时无需等待播放结束?

解决winsound播放音频时阻塞程序的问题

要实现winsound播放音频时不阻塞主程序,有两个实用的方案:

方案一:利用winsound自带的异步播放标志

winsound的PlaySound函数支持SND_ASYNC参数,传入这个参数后,音频会在后台播放,主程序立即继续执行,不用等待播放结束。

代码示例:

import winsound

# 传入SND_ASYNC标志实现异步播放
winsound.PlaySound("your_sound.wav", winsound.SND_FILENAME | winsound.SND_ASYNC)
# 下面的代码会立刻执行
print("音频正在后台播放,主程序继续运行...")

注意:如果需要中途停止播放,可以调用winsound.PlaySound(None, 0)来终止当前播放的音频。

方案二:使用threading模块开启子线程

如果需要更灵活的控制(比如播放时执行额外逻辑、管理多个音频任务),可以用Python的threading模块把音频播放放到子线程中,主线程不受影响。

代码示例:

import winsound
import threading

def play_audio(sound_path):
    winsound.PlaySound(sound_path, winsound.SND_FILENAME)

# 启动子线程播放音频
audio_thread = threading.Thread(target=play_audio, args=("your_sound.wav",))
audio_thread.start()

# 主线程继续执行其他任务
print("子线程负责播放音频,主程序可以做别的事情了...")

这种方式的好处是可以对线程进行更多控制,比如设置守护线程(audio_thread.daemon = True,这样主程序退出时子线程也会跟着结束),或者等待线程结束(audio_thread.join())。

内容的提问来源于stack exchange,提问作者masterJohnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 22:57:04