Python 同时播放声音和计时

Python 同时播放声音和计时,python,time,playsound,Python,Time,Playsound,我有以下功能,这是我正在编写的秒表程序的一部分,它将从给定时间开始倒计时,但对于最后5个,它将播放音频剪辑。基本上,该函数应该每隔1秒从5开始倒计时。然而,音频剪辑的时间长度被添加到程序执行的时间间隔中。所以它是1秒+音频剪辑的长度。我试着将time.sleep移到if条件之前,但它仍然是相同的净增益。有没有办法让while循环精确地每秒运行一次,而不管是否有声音在播放 def countdown(timer_count,count_type): counter = timer_coun

我有以下功能,这是我正在编写的秒表程序的一部分,它将从给定时间开始倒计时,但对于最后5个,它将播放音频剪辑。基本上,该函数应该每隔1秒从5开始倒计时。然而,音频剪辑的时间长度被添加到程序执行的时间间隔中。所以它是1秒+音频剪辑的长度。我试着将time.sleep移到if条件之前,但它仍然是相同的净增益。有没有办法让while循环精确地每秒运行一次,而不管是否有声音在播放

def countdown(timer_count,count_type):
    counter = timer_count
    count_type = count_type
    while counter >= 0:
        COUNT_DOWN_TEXT.config(text=f"{count_type} for: {counter}")
        main.update()
        if counter == 1:
            playsound('sound/1-sec-daisy.mp3')
        elif counter == 2:
            playsound('sound/2-sec-daisy.mp3')
        elif counter == 3:
            playsound('sound/3-sec-daisy.mp3')
        elif counter == 4:
            playsound('sound/4-sec-daisy.mp3')
        elif counter == 5:
            playsound('sound/5-sec-daisy.mp3')
        time.sleep(1)
        counter -= 1
        print(counter)
    if count_type != "workout":
        count_type = "workout"
    elif count_type == "workout":
        count_type = "rest"
    return count_type

由于代码是按顺序执行的,即播放一个声音,然后等待1秒,因此总时间为1秒+声音长度。 如果要确保总计为1秒,则有两个选项

  • 在单独的线程中播放声音(请检查python中的多线程)
  • 将声音的长度从1秒缩短,然后在剩余的时间应用睡眠