def pingGetterLoop():
    while(1):
        pingGetter()

def mainLoop():
    root.mainloop()


print("thread two")
threadTwo = Thread(target = mainLoop())
print("thread one")
threadOne = Thread(target = pingGetterLoop())

threadOne.start()
threadTwo.start()

由于某些原因,threadTwo永远不会启动,并且输出始终是threadOne,但是当我在threadOne上切换threadTwo的位置时,threadOne无法运行。我想这就是他们进入队列的方式,但是,我不知道该如何解决。

最佳答案

问题是如何将函数传递给线程。您调用它们而不是传递可调用对象。您可以通过删除括号()来解决此问题:

print("thread two")
threadTwo = Thread(target=mainLoop)
print("thread one")
threadOne = Thread(target=pingGetterLoop)

由于这两个函数都包含一个无限循环,因此您永远无法调用第一个函数,然后再循环下去。

10-07 18:54