簡體   English   中英

重用python加載的模塊

[英]Reuse python loaded module

是否可以重用已經加載到內存中的python模塊?

讓我們說我有腳本loader.pyconsume.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)

與依靠導入機制來運行代碼相比,像這樣進行設置可以為您提供更大的靈活性,而這並不是它設計的目的。


根據您的更新的附錄:您正在使事情變得比他們需要做的要困難得多。 您確實真的不需要在普通代碼中使用importlibglobals() 這些是用於構建庫而不進行數據分析的工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM