我在一个函数中有一个while循环,用于侦听来自套接字连接的传入消息。
def listenToMidiStream():
recording = True
global TRACK_IS_PLAYING
thread = threading.Thread(target=loopIt)
thread.start()
while recording:
stream = CLIENT_SOCK.recv(1024)
message = json.loads(stream.decode())
print(message)
if message:
MIDI_OUT.send_message(message)
if message == [250]:
TRACK_IS_PLAYING = True
elif message == [252]:
TRACK_IS_PLAYING = False
当第一次调用该函数时,它会启动一个发送时钟信号的线程。当Boolean设置为False时,这应该停止。
def loopIt():
global TRACK_IS_PLAYING
while TRACK_IS_PLAYING:
for i in range(0,8):
MIDI_OUT.send_message(clock)
time.sleep(interval)
现在loopIt()
被调用一次。当[250]消息进入时,我无法调用该函数或更改TRACK_IS_PLAYING
。我尝试了几件事,但我真的无法以正确的方式做到这一点。
答案 0 :(得分:3)
在loopIt()函数中更改while循环:
while True:
if TRACK_IS_PLAYING:
for i in range(0,8):
MIDI_OUT.send_message(clock)
time.sleep(interval)
现在,只有在TRACK_IS_PLAYING设置为True
时才会发送消息