如何有效加载同一个 python 模块的多个实例

问题描述

我知道在 python 中模块通常只实例化一次,但是我非常希望能够实现与多次实例化同一个模块相同的效果

作为一个最小的例子,我有 2 个文件

classes_1.py

class my_class:
  def __init__(self,x):
    self.pg = __import__('put_x_get_x')
    self.pg.initialise(x)
  def getx(self):
    return self.pg.extract_x()

main.py

from classes_1 import my_class
objs = []
objs.append(my_class(3.145))
print objs[0].getx()
objs.append(my_class(2.718))
print objs[0].getx()
print objs[1].getx()

对于哪个跑步:

$ python main.py

当前输出

3.145
2.718
2.718

但我希望它返回

3.145
3.145
2.718    

有没有办法修改classes_1.py文件来实现这个?

我想这样做的原因是我想实例化的真正模块实际上是一个非常大的旧 Fortran 代码的包装器。在模块内部有数千个变量需要初始化,然后改变我想暴露给 python 代码的 fortran 函数输出。由于与随后的函数调用相比,这些变量的初始化非常昂贵,因此我不能每次都重新初始化模块变量(特别是因为我需要调用相同的函数数百万次)。任何关于如何实现这一最终目标的替代建议也将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)