第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在python中緩存一個不改變的經(jīng)常讀取的文件

在python中緩存一個不改變的經(jīng)常讀取的文件

達(dá)令說 2023-07-05 17:42:08
好吧,大家讓我舉例說明,我有這個def get_config_file(file='scrapers_conf.json'):    """    Load the default .json config file    """    return json.load(open(file))這個函數(shù)被調(diào)用很多,這將在服務(wù)器上,每個請求都會觸發(fā)這個函數(shù)至少 5 次,我有多個刮刀在運(yùn)行,每個刮刀都在以下形狀上。為了方便起見,我刪除了輔助方法,問題是,每個抓取工具都應(yīng)該有自己的請求標(biāo)頭、有效負(fù)載……或者使用位于的默認(rèn)標(biāo)頭scrapers_conf.jsonclass Scraper(threading.Thread): # init is overriden and has set .conf    def run(self):        self.get()    def get(self):        # logic問題是我得到的標(biāo)題像class Scraper(threading.Thread):    def run(self):        self.get()    def get(self):        headers = self.conf.get('headers') or get_config_file().get('headers')正如您所看到的,每個請求的每個實(shí)例都會調(diào)用 get_config_file() 函數(shù),我認(rèn)為這在我的情況下不是最佳的。我知道,lru_cache但我不認(rèn)為這是最佳解決方案(請糾正我?。┡渲梦募苄。琽s.sys.getsizeof報(bào)告不到 1 KB。我正在考慮將其保留,因?yàn)榭紤]到讀取 1 KB 不是問題。
查看完整描述

2 回答

?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個贊

我完全忘記了@functools.cached_property


@cached_property

def get_config_file(file='scrapers_conf.json'):

    """

    Load the default .json config file

    """

    return json.load(open(file))


查看完整回答
反對 回復(fù) 2023-07-05
?
夢里花落0921

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個贊

lru_cache(maxsize=None)聽起來是正確的方法;maxsize=None通過關(guān)閉 LRU 機(jī)制可以使其速度更快。

另一種方法是get_config_file()在程序的開頭(在__init__、get或?qū)嵗惖牡胤剑┱{(diào)用,將其分配給每個 Scraper 類上的一個屬性,然后始終引用self.config(或其他方式)。這樣做的優(yōu)點(diǎn)是您可以在單元測試中跳過讀取配置文件 - 您可以將測試配置直接傳遞到類中。

在這種情況下,由于該類已經(jīng)有一個self.conf,因此最好使用文件中的值更新該字典,而不是在每個方法中引用兩個位置。


查看完整回答
反對 回復(fù) 2023-07-05
  • 2 回答
  • 0 關(guān)注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號