Проблема с потоками python
Какой день пытаюсь реализовать нормальную работу двух потоков в python, использовал threading, multiprocessing и результатов 0. У меня есть программа, которая сначала записывает все нажатия клавиатуры в массив, а потом их воспроизводит в цикле. Всё работает отлично. Далее я решил создать хоткей на отмену воспроизведения, но воспроизведение то работает в цикле, поэтому я решил создать еще один поток, который отслеживает нажатия.
def playing(recording_data, playback_speed, q):
while True:
for keys in recording_data:
keyboard.send(keys['code'], do_press=True if keys['event_type'] == 'down' else False,
do_release=True if keys['event_type'] == 'up' else False)
for _none in range(int(playback_speed / 10)):
if q.get() is False:
print('Macros now is off!')
return
sleep(0.01)
sleep(0.001 * (playback_speed % 10))
q.put(False)
print('Macros now is done!')
return
def end_playing(replay_end, q):
while True:
if keyboard.is_pressed(replay_end) or (q.get() is False):
q.put(False)
return
def play_recording():
global recording_data, playback_speed, hotkeys
q = Queue()
q.put(True)
r1 = Process(target=playing, args=(recording_data, playback_speed, q))
r2 = Process(target=end_playing, args=(hotkeys['replay_end'], q))
r1.start()
r2.start()
q.close()
q.join_thread()
r1.join()
r2.join()
Но как бы я не пытался всё это не работает, потоки создаются, но циклы не просто работают или же работают но стоят на одном и том же месте и никогда не заканчиваются, код никогда не доходит до строчки
r2.join(), я уже не знаю в чем дело, все переменные без проблем передаются, проблем с Queue нету.
Как это исправить? Или же каким образом реализовать это в 1 поток?