Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重用python加载的模块_Python_Python Import - Fatal编程技术网

重用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

是否可以重用已经加载到内存中的python模块

假设我有脚本
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
,并将其流式输出到某个对象?你能在问题中补充更多关于你所设想的项目流程吗?