【发布时间】:2018-02-17 13:14:00
【问题描述】:
我是事件驱动编程的新手,我真的很想更好地了解当 CPython 解释器逐行遍历代码时会发生什么。到目前为止,我只进行了顺序编程,并且我对解释器如何将我的代码转换为字节码然后从一条语句转到下一条语句并执行命令有一个相当好的想法。
但是对于事件驱动的编程,我完全搞不懂解释器是如何工作的。
我特别困惑
解释器如何知道在源代码中下一步跳转到哪里
还有在某些事件发生时如何调用函数处理程序
事件循环的刷新率是如何处理的:实际上是函数句柄的所有代码每秒运行数千次,但由于某种“事件未发生”标志而没有执行说“现在不要执行这个函数”?
为了使讨论更具体,您能否在以下示例中说明这些要点,取自site:
from Tkinter import *
ROOT = Tk()
def ask_for_userinput():
user_input = raw_input("Give me your command! Just type \"exit\" to close: ")
if user_input == "exit":
ROOT.quit()
else:
label = Label(ROOT, text=user_input)
label.pack()
ROOT.after(0, ask_for_userinput)
LABEL = Label(ROOT, text="Hello, world!")
LABEL.pack()
ROOT.after(0, ask_for_userinput)
ROOT.mainloop()
理想情况下,我希望得到与this 文章类似的解释,该文章从 CPython 解释器如何工作的角度进行了精彩的解释,为什么有些语句是线程安全的而有些不是,以及如何实现了线程安全。
【问题讨论】:
标签: python events interpreter