线程无限循环

Threading an Infinite Loop

def check_incoming_messages_to_client(incoming_chat_messages,uri_str, kill_threads_subscript):
    global kill_threads
    messaging = Pyro4.Proxy(uri_str)

    while(TRUE):
        if(messaging.get_connection() == 'yes'):
            msg = messaging.read_messages_to_client()
            if (msg):
                incoming_chat_messages.insert(END, msg)
        if(kill_threads[kill_threads_subscript]):
           print('break loop')
           break

print('start')
t1 = Thread(target=check_incoming_messages_to_client(incoming_chat_messages[length-1],uri_str, kill_threads_subscript))
t1.setDaemon(True)
t1.start()
print('end')

上面的代码只打印 start 而不是 end。那就是卡在死循环里了,一定不是因为线程化了。我将如何修复它?

Thread(target=check_incoming_messages_to_client(incoming_chat_messages[length-1],uri_str, kill_threads_subscript)) 调用你的函数,然后将结果作为 target 传递(除了因为它永远不会结束,没有结果会实现,你永远不会甚至构建 Thread).

您想分别传递函数 uncalledargs 以便 thread 在运行时调用它,而不是主线程 运行 它甚至在工作线程启动之前:

t1 = Thread(target=check_incoming_messages_to_client,
            args=(incoming_chat_messages[length-1], uri_str, kill_threads_subscript))