[英]Reuse python loaded module
是否可以重用已經加載到內存中的python模塊?
讓我們說我有腳本loader.py
和consume.py
。 我嘗試做下一件事-調用loader.py
和重用consume.py
。 第一個腳本應在內存中加載大文件,第二個腳本將被多次調用並使用大文件。
我能做到嗎? 我不熟悉python,但我想應該有一種方法可以訪問內存中已加載的模塊(腳本)。
我當前的實現嘗試如下所示:
loader.py
x = 3
print 'module loaded'
consume.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.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()
。 這些是用於構建庫而不進行數據分析的工具。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.