Когда я выхожу из программы у меня пишет "Python не отвечает."
def start_sound(sound):
filename = sound
chunk = 1024
wf = wave.open(filename, 'rb')
p = pyaudio.PyAudio()
stream = p.open(format = p.get_format_from_width(wf.getsampwidth()),
channels = wf.getnchannels(),
rate = wf.getframerate(),
output = True)
data = wf.readframes(chunk)
while data != '':
stream.write(data)
data = wf.readframes(chunk)
stream.close()
p.terminate()
pygame.init()
screen = pygame.display.set_mode((1069, 800))
pygame.display.set_icon(pygame.image.load("assets\img\icon.png"))
bg = pygame.image.load("assets/img/bg.jpg")#.convert()
pygame.display.set_caption("PvZ remake edition")
screen.blit(bg, (0, 0))
def game_loop():
while True:
for e in pygame.event.get():
# если нажали на крестик
if e.type == pygame.QUIT:
raise SystemExit("QUIT")
pygame.display.update()
def music():
start_sound("assets/sound/Music.wav")
thread1 = Thread(target=game_loop)
thread2 = Thread(target=music)
thread2.start()
thread1.start()
thread2.join()
thread1.join()
Я использую модули pyaudio, pygame и threading. Работаю в визуал студио код. Скрин:
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Сделайте демоном нить, которая играет музыку. Тогда её не нужно будет останавливать при выходе из программы.
...
thread2 = Thread(target=music, daemon=True)
thread2.start()
thread1.start()
# thread2.join()
thread1.join()
P.S. Выполнять game_loop
в выделенной нити нет смысла. Возможно, это задел на будущее, но в текущей конфигурации проще вызвать его в основном потоке.