我最近开始使用多线程来例如在for循环期间提供输入。这是成功的,但我想尝试更多。 当我尝试与Tkinter结合使用线程时出错了。 所以对于我的例子,我有一个非常简单的片段代码(Python 2.7.11)。我意识到它胜过了线程,但它显示了我的问题:
import Tkinter
import threading
def func():
root=Tkinter.Tk() #Open Tkinter window
Tkinter.mainloop()
root.quit() #Extra quit, although it doesn't seem to help
thread1=threading.Thread(target=func)
thread1.start()
thread1.join() #Wait for thread to end (for me to close the window)
del thread1 #Extra deletes (although they don't seem to help)
del func
运行此代码一次正常。 Tkinter窗口打开,我手动关闭它,其余工作正常。但是,如果我再次运行它,解释器会冻结。如果添加第二个线程或简单的松散打印语句,它甚至不会启动它们。整个enterpreter冻结,我只能通过重新启动内核重新运行此代码。 那么我是否必须以特殊方式退出线程/ Tkinter以防止这种情况发生?
其他信息: 我的CPU使用率上升了。运行它时,第二次任务管理器显示高达30%的CPU使用率。所以我想某个地方会出现无限循环。 我已经读过Tkinter没有很好地处理线程,但我已经看到了这种情况。我在这里有一个非常简单的事情,所以它一定是我做错了。 希望有人可以帮助我,因为我无法以任何方式找到答案谷歌。
提前致谢。