zoukankan      html  css  js  c++  java
  • Python module重复载入的问题

    测试环境准备:

    1、在site-packages下新建一个用于测试的包,包含如下文件

    2、文件的内容:

    a.py

    # -*- coding:utf-8 -*-

    from __future__ import print_function, unicode_literals, division
    from future_builtins import *

    print('initializing a')

    if '__main__' == __name__:
        pass

    b.py

    # -*- coding:utf-8 -*-

    from __future__ import print_function, unicode_literals, division
    from future_builtins import *

    from import_test import a
    import a, c

    if '__main__' == __name__:
        pass

    c.py

    # -*- coding:utf-8 -*-

    from __future__ import print_function, unicode_literals, division
    from future_builtins import *

    from import_test import a
    import a

    if '__main__' == __name__:
        pass

    在命令行上执行python b.py,出现如下结果:

    为什么会这样?从过程来看,就是from...import和import找到的module被python认为是两个玩意,所以初始化了两次(代码中from...import和import分别执行了两次,a一共被import四次,只是被同样语句import进来的module被缓存了,所以只初始化了两次)。

    项目中遇到这种情况一定要小心,重复初始化module浪费内存只是小事,要是module的逻辑过于复杂而导致什么莫名其妙的bug那才叫杯具。

  • 相关阅读:
    JZOJ5809 数羊
    P3313 [SDOI2014]旅行
    2019.10.22 NOIP模拟测试 day2
    P4322 [JSOI2016]最佳团体
    P1850 换教室
    P3225 [HNOI2012]矿场搭建
    P2607 [ZJOI2008]骑士
    2019.10.21 NOIP模拟测试 day1
    AFO
    禁止加载浏览器图片
  • 原文地址:https://www.cnblogs.com/inside/p/2213466.html
Copyright © 2011-2022 走看看