婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python import模塊的緩存問題解決方案

Python import模塊的緩存問題解決方案

熱門標簽:北京電銷外呼系統加盟 朝陽手機外呼系統 地圖標注面積 所得系統電梯怎樣主板設置外呼 小蘇云呼電話機器人 北瀚ai電銷機器人官網手機版 市場上的電銷機器人 儋州電話機器人 佛山400電話辦理

在使用django開發的平臺中,支持用戶自定義函數,但是每次用戶進行修改編輯后,該模塊內容已更改,然后重新導入該模塊,但是Python 會認為“我已經導入了該模塊,不需要再次讀取該文件”,所以更改將無效。

因此,每次更改文件的內容時,都必須退出并重新啟動Django。

使用python開發后臺服務程序的時候,每次修改代碼之后都需要重啟服務才能生效比較麻煩

要解決這個問題,有以下幾種方式:

最簡單、最有效的方法:重新啟動 Django。但是,這也有缺點,特別是丟失了 django名稱空間中存在的數據以及其他導入模塊中的數據。

對于簡單的情況,可以使用 Python 的​reload()​函數。在許多情況下,在編輯一個模塊之后使用

​reload()​函數就足夠滿足需求。

這里主要是介紹第二種方式:

​reload()​是 Python 提供的內置函數,在不同的 Python 版本中有不同的表現形式:

在 Python 2.x 中,reload()是內置函數。

在 Python 3.0 - 3.3 中,可以使用imp.reload(module)。

在 Python 3.4 中,imp 已經被廢棄,取而代之的是importlib。

Python2.7可以直接用reload():

python2 內置函數reload(module)

Python3可以用下面幾種方法:

方法一:基本方法

from imp import reload
reload(module)

方法二:

import imp
imp.reload(module)

方法三:

import importlib
importlib.reload(module)

方法四:

from importlib import reload
reload(module)

說明:

module 必須是已經成功導入的模塊

模塊被加載到內存以后,更改文件內容,已經運行的程序不會生效的,可通過reload重新加載。

導入是一個開銷很大的操作。

python中緩存模塊的一些用法

一.問題描述

有時候可能需要緩存一些 成員方法的值, 可能成員方法的計算比較耗時,有時候不希望重復調用計算該值, 這個時候就可以緩存該值.

查了一下標準庫 有 functools.lru_cache 有一個 lru_cache 可以緩存成員函數的值,

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""
@author: Frank 
@contact: frank.chang@shoufuyou.com
@file: test_lru_cache.py
@time: 2018/9/8 下午8:55
"""
import time
from functools import lru_cache

class Model:
    @lru_cache(maxsize=10)
    def calculate(self, number):
        print(f'calculate({number}) is  running,', end=' ')
        print('sleep  3s  ')
        time.sleep(3)
        return number * 3

if __name__ == '__main__':

    model = Model()

    for i in range(5):
        print(model.calculate(i))

    for i in range(5):
        print(model.calculate(i))

結果如下:

calculate(0) is  running, sleep  3s 
0
calculate(1) is  running, sleep  3s 
3
calculate(2) is  running, sleep  3s 
6
calculate(3) is  running, sleep  3s 
9
calculate(4) is  running, sleep  3s 
12
0
3
6
9
12

從結果開出來, 第二次計算的時候 , 就沒有計算 而是通過緩存取值, 所以成員方法只計算了一次.

lru_cache 可以指定 max_size 緩存的大小, typed bool 如果為True, 代表不同類型分別緩存. 如果達到max_size 淘汰策略是LRU, LRU是Least Recently Used的縮寫,即最近最少使用,常用于頁面置換算法.

二 第三方的模塊

第三方的模塊cachetools 已經提供了很多緩存策略,直接拿來用一下.

來看下面的例子.

1 來看一個緩存成員方法例子

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""
@author: Frank 
@contact: frank.chang@shoufuyou.com
@file: test_cache.py
@time: 2018/9/8 下午12:59
pip install cachetools

https://docs.python.org/3/library/operator.html

緩存成員方法的值 
cachetools  已經實現好了, 直接用就可以了. 

"""
from operator import attrgetter
import time
from cachetools import LRUCache,RRCache , cachedmethod

class Model:
    def __init__(self, cachesize):
        self.cache = LRUCache(maxsize=cachesize)

    @cachedmethod(attrgetter('cache'))
    def get_double_num(self, num):
        """ return  2* num"""
        print(f'get_double_num({num})  is running')
        time.sleep(2)
        return num * 2

model = Model(cachesize=10)
print(model.get_double_num(10))
print(model.get_double_num(10))
print(model.get_double_num(10))
print(model.get_double_num(10))
print(model.get_double_num(10))
print(model.get_double_num(10))

結果如下:

get_double_num(10)  is running
20
20
20
20
20
20
Process finished with exit code 0

可以看出, 值計算一次 函數,第二次走的是緩存. 非常好用. 在初始化方法里面構造一個緩存對象, 之后用 cachedmethod 修飾成員函數,同時 用attrgetter(‘cache') 把cache 拿到就可以用了.

實際上 cachetools 實現了很多緩存策略,具體緩存策略可以參考下面的鏈接.

'Cache', 'LFUCache',
'LRUCache',
'RRCache', 'TTLCache',

‘cached', ‘cachedmethod' 這兩個分別用來修飾 函數和成員方法的.

2 來看一個 緩存函數

# 緩存 函數的值
from cachetools import cached
@cached(cache={})
def fib(n):
    print((f'fib({n}) is  running.'))
    return n if n  2 else fib(n - 1) + fib(n - 2)

for i in range(20):
    print('fib(%d) = %d' % (i, fib(i)))
@cached(cache={})
def fun(n):
    print(f'fun({n}) is runnnig.')
    time.sleep(3)
    return n ** 2

if __name__ == '__main__':
    for _ in range(5):
        print(fun(4))

如果cache = None , 表示不緩存,該計算結果.

結果如下:

fun(4) is runnnig.
16
16
16
16
16

直接導入 cached 里面 傳入一個字典就可以了,用起來也比較方便.

實現分析:

緩存思路大致是一樣的, 首先先把參數hash 一下生成一個key, 然后看key 是否在自己的緩存里,不在就計算方法(函數),之后把key和對應value 放到自己的子弟那里面. 如果下一次計算該值,生成一個key 看是否在 自己的字典里面,如果在直接返回即可. 當然這是基本的思路, 里面還有用到 緩存淘汰策略, 多線程是否要加鎖,等比較復雜的問題.

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Python入門基礎之import機制
  • 解決Python import .pyd 可能遇到路徑的問題
  • python 指定源路徑來解決import問題的操作
  • 關于Python3的import問題(pycharm可以運行命令行import錯誤)
  • 解決python3.x安裝numpy成功但import出錯的問題
  • python import 上級目錄的導入

標簽:商丘 酒泉 寧夏 云南 定西 江蘇 龍巖 金融催收

巨人網絡通訊聲明:本文標題《Python import模塊的緩存問題解決方案》,本文關鍵詞  Python,import,模塊,的,緩存,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python import模塊的緩存問題解決方案》相關的同類信息!
  • 本頁收集關于Python import模塊的緩存問題解決方案的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产欧美一区二区三区在线看蜜臀 | 亚洲国产视频一区二区| 老司机午夜精品| 日韩欧美视频在线| 美女网站视频久久| 久久精品一区四区| youjizz久久| 亚洲综合另类小说| 欧美在线观看视频在线| 亚洲国产欧美在线| 日韩美女一区二区三区四区| 国产a视频精品免费观看| 一区精品在线播放| 91久久精品一区二区二区| 亚洲黄网站在线观看| 91精品国产综合久久福利软件 | 成人中文字幕在线| 亚洲品质自拍视频| 欧美日韩国产综合久久| 日韩成人免费电影| 精品久久久久久亚洲综合网 | 欧美在线观看视频一区二区 | 亚洲一级不卡视频| 欧美大片一区二区三区| 国产精品18久久久久久vr| 亚洲欧美综合色| 制服丝袜亚洲色图| av一区二区久久| 亚洲精品视频在线看| 国产精品视频一区二区三区不卡| 欧美吞精做爰啪啪高潮| 2022国产精品视频| 欧美午夜精品久久久久久孕妇| 亚洲男人的天堂在线aⅴ视频| 久久成人羞羞网站| 国产精品乱人伦| 亚洲视频在线观看一区| 欧美亚洲日本国产| 国产农村妇女精品| 国产成人亚洲综合a∨猫咪| 欧美精品高清视频| 国产伦精品一区二区三区视频青涩| 国产成人自拍网| 精品成人佐山爱一区二区| 成人a级免费电影| 午夜免费欧美电影| 欧美国产日韩一二三区| av一二三不卡影片| 精品久久久久99| 日韩精品亚洲专区| 久久久久国产成人精品亚洲午夜| 成人午夜私人影院| 亚洲mv在线观看| 久久久久久久电影| 在线观看视频一区| 成人福利视频在线| 国产一区二区三区在线观看精品| 日韩毛片视频在线看| 日韩精品一区二区三区在线播放| 91在线精品秘密一区二区| 国产乱一区二区| 日韩经典中文字幕一区| 亚洲自拍偷拍图区| 国产精品久久国产精麻豆99网站| 日韩精品一区国产麻豆| 日韩欧美一区二区免费| 制服丝袜中文字幕一区| 欧美群妇大交群中文字幕| 在线观看视频欧美| 欧美色图激情小说| 欧美日韩国产一级| 欧美三级午夜理伦三级中视频| 9i看片成人免费高清| 国产激情91久久精品导航| 国产精品一区二区男女羞羞无遮挡 | 蜜桃av一区二区三区电影| 一区二区三区在线视频免费| 亚洲免费大片在线观看| 一区二区激情小说| 亚洲一卡二卡三卡四卡| 日韩制服丝袜av| 蜜臀av性久久久久蜜臀aⅴ流畅| 奇米综合一区二区三区精品视频 | 99re成人精品视频| av在线不卡电影| 精品视频资源站| 欧美电视剧在线观看完整版| 久久青草欧美一区二区三区| 日本一区二区成人| 亚洲欧洲www| 午夜欧美一区二区三区在线播放| 日韩二区三区四区| 国产激情91久久精品导航| 日本韩国欧美在线| 91精品国产色综合久久不卡电影| 久久精品在线免费观看| 亚洲三级电影网站| 美女网站色91| 91麻豆swag| 日韩天堂在线观看| 国产精品热久久久久夜色精品三区| 亚洲自拍与偷拍| 国产精一品亚洲二区在线视频| 91小视频在线| 欧美一级午夜免费电影| 中文一区二区完整视频在线观看| 亚洲一区二区综合| 高清在线观看日韩| 91 com成人网| 亚洲女与黑人做爰| 国产成人精品一区二区三区四区 | 99精品1区2区| 精品国产一区二区国模嫣然| 亚洲免费成人av| 国产高清视频一区| 欧美一区二区人人喊爽| 亚洲卡通欧美制服中文| 精品一区二区国语对白| 欧美日韩另类一区| 国产精品欧美极品| 国产精品99久久久久久有的能看 | 国产日本欧洲亚洲| 日本vs亚洲vs韩国一区三区| 99在线热播精品免费| 久久久国产精华| 日本美女一区二区三区视频| 91视频在线看| 国产丝袜在线精品| 日本美女一区二区三区| 欧美日韩第一区日日骚| 欧美经典一区二区| 国产一区二区久久| 久久久久久久久久久黄色| 蜜臀va亚洲va欧美va天堂| 欧美美女直播网站| 丝袜美腿亚洲色图| 5858s免费视频成人| 偷窥少妇高潮呻吟av久久免费| 欧美视频精品在线观看| 亚洲综合色在线| 99久久精品国产一区| 国产精品国产自产拍高清av王其| 国产成人午夜视频| 中文字幕中文字幕在线一区| 99精品久久只有精品| 亚洲精品中文在线影院| 91蜜桃传媒精品久久久一区二区| 最新国产の精品合集bt伙计| 色综合一区二区三区| 亚洲高清免费在线| 欧美一级电影网站| 蜜桃视频第一区免费观看| 欧美精品一区二区久久久| 国产成人自拍网| 亚洲欧美一区二区视频| 欧美性极品少妇| 免费观看30秒视频久久| 精品国产乱码久久久久久闺蜜| 精品一区二区三区免费毛片爱| 精品久久久久一区| jlzzjlzz亚洲女人18| 亚洲一区二区av电影| 2024国产精品| 91久久奴性调教| 1024国产精品| 日韩欧美亚洲另类制服综合在线| 亚洲天堂免费看| 欧美日韩精品免费| 日本免费新一区视频| wwwwxxxxx欧美| 色一情一伦一子一伦一区| 全国精品久久少妇| 欧美成人乱码一区二区三区| 国产盗摄视频一区二区三区| 亚洲三级久久久| 精品欧美一区二区在线观看| av高清不卡在线| 亚洲.国产.中文慕字在线| 国产亚洲精品福利| 日本韩国欧美在线| 国产一区二区三区久久久| 亚洲综合激情网| 欧美又粗又大又爽| 日韩国产在线一| 欧美国产精品一区二区| 日本精品一级二级| 国产精品一区二区三区99| 亚洲综合精品久久| 国产亚洲精品超碰| 9191精品国产综合久久久久久| 99国产欧美久久久精品| 蜜臀久久99精品久久久久宅男| 国产精品麻豆欧美日韩ww| 欧美一级二级三级乱码| 在线观看不卡视频| 粉嫩aⅴ一区二区三区四区| 日本欧美大码aⅴ在线播放| 亚洲精品一二三| 国产精品久久毛片a| 精品国产一区二区三区不卡|