tom*_*012 -1 python performance module
我有一个使用 twitter api 分布在 2 个文件中的程序。有一个文件专用于发送和读取推文,因此我已将“导入 twitter”行放入该文件中。第二个文件有一个导入语句来导入这个基于 twitter 的文件,并将从该文件调用“read”和“post”函数。
这是代码的要点:
文件一:
import file2
file2.post(some text)
Run Code Online (Sandbox Code Playgroud)
文件2:
import twitter
api = twitter.Api(...)
def post(text):
api.PostUpdate()
Run Code Online (Sandbox Code Playgroud)
这工作正常并且完全按照我的预期运行,但我不确定这是否是运行此程序的最有效的方式(从性能角度来看)。每次调用文件 2 时都会运行“import twitter”行并用重复的导入填满内存和时间吗?如果是这样,我会更好地这样做:
文件一:
import twitter
import file2
api = twitter.Api(...)
file2.post(some text, api)
Run Code Online (Sandbox Code Playgroud)
文件2:
def post(text, api):
api.PostUpdate(text)
Run Code Online (Sandbox Code Playgroud)
api 对象在文件之间传递的位置。
谢谢
导入会缓存所有导入,因此对于多次导入,它们只会在第一次执行导入后访问缓存的版本。有关其工作原理的详细信息,请参阅https://docs.python.org/3/reference/import.html 。
一般来说,您应该围绕正确的模块概念创建导入结构,性能不应该成为此决定的一个重要因素,因为老实说,当您获得正确的导入结构时,不会有太大的性能差异。如果您使用文件中模块中的某些内容,则应该显式导入该模块。与此相关的是,确保您使用的每个模块都可以直接导入而不会出现错误,这将帮助您更好地设计模块并避免一类微妙的错误,在这些错误中,由于 importlib 中的缓存机制,更改导入顺序可能会导致错误。