【问题标题】:Threading an Infinite Loop线程化一个无限循环
【发布时间】:2019-04-12 15:59:00
【问题描述】:
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。这意味着它陷入了无限循环,这一定不是因为它是线程化的。我将如何解决它?

【问题讨论】:

    标签: python python-3.x multithreading infinite-loop python-multithreading


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 2013-08-04
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多