制作昂贵的Python数组全局

问题描述 投票:0回答:2

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

  • 一个单一的计划:我的项目同事会拍我:-)
  • 通过函数调用“Piping through”作为参数:我自己拍摄。 :-)(另外,想想依赖...)
  • 将所有需要它的函数放入同一个模块:Egad,架构被破坏了。另外,我没有在该位置进行数组计算的参数。

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

那么,实际结果是该程序是一只蜗牛并且进行1000000次运行以获得有意义的统计数据是不可能的......

python global-variables
2个回答
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
   ...

0
投票

如果我的理解是正确的(请随意纠正我),那么如果某事是workspace.py中的全局变量并且我有另一个程序project.py我可以运行from workspace import *来获得与我的workspace.py文件相同的全局变量命名空间。这通常是不赞成的,因为你可能无意中重用了相同的变量名而没有意识到它,从而破坏了你的程序。它(在大多数情况下不必要)将所有变量加载到RAM中,基本上使project.py只是原始workspace.py的扩展,可以访问相同的类,方法和变量。

© www.soinside.com 2019 - 2024. All rights reserved.