Я хочу, чтобы мой код делал это, но с музыкой, играющей в фоновом режиме:
import time
while True:
print ('ligma')
time.sleep(1.5)
Я попробовал это:
import time
import winsound
while True:
print ('ligma')
time.sleep(1.5)
winsound.PlaySound("dank", winsound.SND_ALIAS)
но повторяет звук, а затем повторяет слово. Я ожидаю, что он повторит это слово и одновременно воспроизведет звук.
Вам нужно воспроизвести звук в другом потоке, так что ваш другой код может выполняться одновременно.
import time
import winsound
from threading import Thread
def play_sound():
winsound.PlaySound("dank", winsound.SND_ALIAS)
while True:
thread = Thread(target=play_sound)
thread.start()
print ('ligma')
time.sleep(1.5)
EDIT: я переместил объявление потока в цикл. Мой первоначальный ответ был создан за пределами цикла, что вызвало RuntimeError. Подробнее читайте здесь: https://docs.python.org/3/library/threading.html#threading.Thread.start
Он называется асинхронным звуком, а флаг winsound.SND_ASYNC
в PlaySound
позволяет воспроизводить звук, пока ваш код продолжает выполнять:
winsound.PlaySound("dank", winsound.SND_ALIAS|winsound.SND_ASYNC)
Из памяти это даст вам один звуковой канал, т.е. Воспроизведение других звуков отключит любые воспроизводимые в данный момент звуки. Если требуется более параллельное воспроизведение, требуется что-то вроде PyGame.