重用python加载的模块
是否可以重用已经加载到内存中的python模块 假设我有脚本重用python加载的模块,python,python-import,Python,Python Import,是否可以重用已经加载到内存中的python模块 假设我有脚本loader.py和consume.py。我正在尝试做下一件事——调用loader.py并在consume.py中重用它。第一个脚本应该在内存中加载大文件,第二个脚本将被多次调用并使用大文件 我能做到这一点吗?我不熟悉python,但我想,应该有一种方法可以访问内存中加载的模块(脚本) 我当前的实现尝试如下所示: 加载器.py x = 3 print 'module loaded' 消耗.py from loader
loader.py
和consume.py
。我正在尝试做下一件事——调用loader.py
并在consume.py
中重用它。第一个脚本应该在内存中加载大文件,第二个脚本将被多次调用并使用大文件
我能做到这一点吗?我不熟悉python,但我想,应该有一种方法可以访问内存中加载的模块(脚本)
我当前的实现尝试如下所示:
加载器.py
x = 3
print 'module loaded'
消耗.py
from loader import x
print x
更新
我尝试使用前面描述的importlib
,但我的加载程序模块每次都会加载。下面是我的cosume.py代码
import importlib
module = importlib.import_module('loader')
globals().update(
{n: getattr(module, n) for n in module.__all__} if hasattr(module, '__all__')
else
{k: v for (k, v) in module.__dict__.items() if not k.startswith('_')
})
print(x)
最终目标
多次从nodejs调用consume脚本,而不是每次都加载大文件。需要在脚本执行之间共享数据在
consume.py
中定义一个函数来完成您想要完成的工作。事实上,这一切都应该是功能。您可以有三个文件,一个用于定义加载数据的函数,一个用于定义使用数据的函数,另一个用于将它们组合到某个进程中
例如,一个模块加载数据:
# loader.py
def load_data():
# load the data
一个模块,用于编写使用数据的函数:
# consume.py
def consume_data(data):
# do stuff with the data
def consume_data_differently(data):
# do other stuff with the data
还有一个脚本,它实际上做了一些事情:
# do_stuff.py
from loader import load_data
from consume import consume_data
data = load_data()
for d in data: # consume pieces of data in a loop
consume_data(d)
像这样的设置比依赖导入机制来运行代码提供了更大的灵活性,而导入机制并不是为此而设计的
基于您的更新的附录:您正在使事情变得比需要的困难得多。您真的,真的不需要在普通代码中使用
importlib
和globals()
。这些是用于构建库的工具,而不是进行数据分析。可能重复的dou stuff.py文件没有位置。我计划多次从node.js调用consume.py文件。此时,应该已经加载了所有设置(用于重用的python对象)。我误解了如何整合提议的解决方案。谢谢,你说“没有空间”是什么意思?假设您可以多次调用consume.py
,您可以调用一次do_stuff.py
,并将其流式输出到某个对象?你能在问题中补充更多关于你所设想的项目流程吗?