您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

从模块导入函数需要很长时间

5b51 2022/1/14 8:21:48 python 字数 3936 阅读 507 来源 www.jb51.cc/python

当我在python脚本中导入我自己编写的模块函数时,加载大约需要6秒钟.该函数只包含大约50行代码,但这甚至不重要,因为它还没有被执行好吗?这是加载函数的脚本:#/usr/bin/env python import time print(time.clock()) from os import chdir print(time.clock()) from

概述

当我在python脚本中导入我自己编写的模块函数时,加载大约需要6秒钟.该函数只包含大约50行代码,但这甚至不重要,因为它还没有被执行好吗?

这是加载函数的脚本:

#/usr/bin/env python

import time
print(time.clock())
from os import chdir
print(time.clock())
from os.path import abspath,dirname
print(time.clock())
from Project.controllers.SpiderController import RunSpider
print(time.clock())

输出如下:

0.193569
0.194114
0.194458
6.315348

我也尝试导入整个模块,但结果是一样的.

可能是什么原因?

一些旁注:

>我使用python 2.7.9
>该模块使用scrapy框架
> python脚本在RaspBerry Pi 1 Model B上运行

but that shouldn’t even matter since it has not been executed yet right?

函数本身的代码不会被执行,但会执行文件中的代码.这是合乎逻辑的,因为该文件可能包含装饰器,库调用,内部常量等.甚至可能构建函数(因此算法构造函数).

来自< module> import< item>您执行几乎正常的导入,但只创建一个对该包中项目的引用.

因此,如果在模块中编写了一个程序(在if __name__ ==’__ main__’:)中没有作用域,或者导入大量其他库时,可能需要很长时间.

例如,可以构造如下函数

def foo(x):
    return x + 5

def bar(y):
    return y * 2

def qux(x):
    return foo(bar(x))

如果你从模块导入qux运行,那么首先必须定义foo和bar,因为qux依赖于这些.

此外,虽然代码本身没有执行,但解释器将分析函数:它将源代码转换为语法树并进行一些分析(哪些变量是本地的,等等).

最后请注意,包通常有一个__init__.py文件,用于初始化包.该文件也被执行,也可能需要相当长的时间.例如,某些具有数据库连接的软件包已经建立了与该数据库的连接,并且在数据库响应连接之前可能需要一些时间.

总结

以上是编程之家为你收集整理的从模块导入函数需要很长时间全部内容,希望文章能够帮你解决从模块导入函数需要很长时间所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶