使昂贵的Python数组成为全球性

时间:2019-03-23 20:33:42

标签: python global-variables

我想避免在Python中重新计算昂贵的数组。幸运的是,它是不可变的-因此“复制指针”就足够了。不幸的是,程序被分成了模块负载,我在这里和那里都需要它,并且变量在Python中最多是模块全局的。计算一次(例如在main中)后,如何将数组“导入”到另一个模块中?

  • 一个程序:我的项目同事会射击我:-)
  • 通过函数调用将“通过”作为参数:我向自己开枪。 :-)(还要考虑依赖关系...)
  • 将需要它的所有功能放入同一模块中:Egad,体系结构被破坏了。而且,我在那个位置没有用于数组计算的参数。

(对不起,没有任何有用的代码)

好吧,实际结果是该程序是蜗牛,要进行1000000次运行才能获取有意义的统计信息……

2 个答案:

答案 0 :(得分:0)

如果我的理解是正确的(可以随时纠正我),那么如果在workspace.py中有一个全局变量,并且我有另一个程序project.py,则可以运行from workspace import *获得与我的workspace.py文件相同的全局变量名称空间。但是,这通常会让人皱眉,因为您可能会不知不觉地重用相同的变量名而没有意识到,从而破坏了程序。它还(在大多数情况下不必要)将变量所有加载到RAM中,实际上使project.py只是原始workspace.py的扩展,可以访问相同的类,方法和变量

答案 1 :(得分:0)

如果将bigArray计算放在bigArray.py模块中,则应该可以通过专门导入来在其他任何模块中使用它:

from bigArray import bigArray

如果您希望仅在首次引用该数组时才对其进行计算,则bigArray.py模块可以使用函数公开该数组。

# bigArray.py
#
bigArray = None
def getBigArray():
    if bigArray is None:
       ... build the bigArray ...
    return bigArray

# otherModule.py
#
from bigArray import getBigArray

   ...
   arr = getBigArray()  # to use the array
   ...