为什么脚本作为模块运行得更快?

问题描述:

我有一个脚本'xyz.py',作为另一个脚本(Main.py)的模块导入。 xyz.py中的所有内容均位于我在Main.py中调用的类中。 xyz.py和Main.py都共享相同的导入语句:“xml.etree.ElementTree”; “Tkinter的”; “CV2”; “tkFileDialog”; “tkfd”; “从PIL导入图像”; “ImageTk”; “os”为什么脚本作为模块运行得更快?

我注意到,当我在Main.py中运行具有xyz.py所有方法和语句的类时,它们作为模块比主脚本运行得更快。 这个观察背后有一个普遍的事实,我可以用它来加速其他的东西吗?谢谢。

PS:我没有提供代码,因为它总计大于400行,而且我不知道我应该看到的是什么,所以我无法采取一个小的相关样本。

当一个python程序运行时,主脚本总是通过解释器传递。然而,当一个模块被导入时,python会检查它的缓存(名为__pycache__的子目录),它存储之前已经被编译为字节码的模块。如果缓存副本的日期与源代码日期的日期相匹配,则它使用缓存版本。这可能是你所看到的。