模型**時使用單例模式避免重複載入
def singleton(cls):
# 單下劃線的作用是這個變數只能在當前模組裡訪問,僅僅是一種提示作用
# 建立乙個字典用來儲存類的例項物件
_instance = {}
def _singleton(*args, **kwargs):
# 先判斷這個類有沒有物件
if cls not in _instance:
_instance[cls] = cls(*args, **kwargs) # 建立乙個物件,並儲存到字典當中
# 將例項物件返回
return _instance[cls]
return _singleton
@singleton
class loadmodel:
def __new__(cls, *args, **kwargs):
config = configparser()
config.read('../config/config.ini')
config_path = config['default']
model = bertforsequenceclassification.from_pretrained(
'../bert_pretrain/', # 使用 12-layer 的 bert 模型.
config=os.path.join(config_path['bert_pretrain_path'], 'bert_config.json'),
num_labels=5, # 多分類任務的輸出標籤為 5個.
output_attentions=false, # 不返回 attentions weights.
output_hidden_states=false, # 不返回 all hidden-states.
)model.load_state_dict(torch.load(os.path.join(config_path['classifier_model_path'], 'pytorch_model.bin')))
model.cuda()
model.eval()
return config_path, model
單例模式 只執行一次初始化
new 方法是構建物件的方法,init 方法是初始化物件的方法。概念 確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項,這個類稱為單例類,單例模式是一種物件建立型模式。目的 單個程序中只存在乙個類的例項,從而實現資料共享,節省系統開銷,防止io阻塞 方法1 使用模組建立單例 檔案ca...
php單例模式實現物件只被建立一次
這是我在php面試題中遇到的一道試題,單例模式按字面來看就是某乙個類只有乙個例項,這樣做的好處還是很大的,比如說資料庫的連線,我們只需要例項化一次,不需要每次都去new了,這樣極大的降低了資源的耗費。單例類至少擁有以下三種公共元素 必須擁有乙個建構函式,並且必須被標記為private。擁有乙個儲存類...
Fragment懶載入(只載入一次)
public abstract class basefragment extends fragment 檢視是否已經對使用者可見,系統的方法 override public void setuservisiblehint boolean isvisibletouser private void is...