Python中有2个无限循环线程

时间:2014-05-13 20:04:06

标签: python multithreading

我在一个函数中有一个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。我尝试了几件事,但我真的无法以正确的方式做到这一点。

1 个答案:

答案 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

时才会发送消息