最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在 Jupyter 中重新導入特定的 Python 文件(場景分析)

 更新時間:2019年10月27日 14:33:15   作者:青南  
Jupyter 是數據分析領域非常有名的開發(fā)環(huán)境,使用 Jupyter 寫數據分析相關的代碼會大大節(jié)約開發(fā)時間。這篇文章主要介紹了在 Jupyter 中如何重新導入特定的 Python 文件,需要的朋友可以參考下

Jupyter 是數據分析領域非常有名的開發(fā)環(huán)境,使用 Jupyter 寫數據分析相關的代碼會大大節(jié)約開發(fā)時間。

設想這樣一個場景:別的部門的同事傳給你一個數據分析的模塊,用于實現對數據的高級分析。模塊里面有上百個函數。

如果直接寫 Python 文件來調用數據分析模塊,那么使用方法非常簡單:

from analyze import FathersAnalyzer

data = [...]
father = FathersAnalyzer(data)
result = father.analyze()
print(f'分析結果為:{result}')

現在,你需要使用 Jupyter 來調用這個分析模塊。你應該怎么在 Jupyter里面調用?

你可能會覺得,這還不簡單嗎?直接把這個模塊的代碼與 Jupyter Notebook 的 .ipynb 文件放在一起,然后在 Jupyter 里面像導入普通模塊那樣導入即可,如下圖所示:

那么現在問題來了,如果我此時修改了 analyze.py 文件,會出現什么情況呢?

我們改一下看看,如下圖所示。

重新運行這個 Cell 中的代碼,代碼中雖然有 from analyze import FathersAnalyzer ,看起來像是重新導入了這個模塊,但是運行卻發(fā)現,它運行的是修改之前的代碼。

這是因為,一個 Jupyter Notebook 中的所有代碼,都是在同一個運行時中運行的代碼,當你多次導入同一個模塊時,Python 的包管理機制會自動忽略后面的導入,始終只使用第一次導入的結果(所以使用這種方式也可以實現單例模式)。

那么如果我在修改了被導入的包以后,想重新導入它怎么辦呢?有3種方案:

importlib

但這種方案弊端也很明顯——除非你按順序運行每一個 Cell,否則,你的代碼會變成下圖這樣:

在每一個 Cell 里面都需要 重新加載一次分析模塊,否則,很有可能在你單獨運行某一個 Cell 的時候,用的是老的代碼,就會導致難以察覺的 bug。

使用 Jupyter 自帶的 %autoreload :

%load_ext autoreload
%autoreload 1
%aimport analyze 

data = 123
importlib.reload(analyze)
father = analyze.FathersAnalyzer(data)
result = father.analyze()
print(result)

運行效果如下圖所示:

其中關鍵的代碼有三行:

%load_ext autoreload
%autoreload 1
%aimport analyze 

這三行代碼只有在 Jupyter 里面才能正常運行,在 普通的.py 文件里面這樣寫會報錯。它們的作用是:第1行啟動 autoreload 機制。第2行,設置自動加載通過 %aimport 導入的模塊。第3行使用 %aimport 導入 analyze 模塊。

這樣寫以后,任意一個 Cell 運行,所有被 %aimport 導入的模塊都會被重新加載一次。從而讓你每次都使用最新的代碼。

當然,你還可以進一步偷懶,把特殊代碼縮減為2行:

%load_ext autoreload
%autoreload 2

%autoreload 后面的參數被設置為2時,每次運行任意一個 Cell,都會自動重新加載所有 import xxx 導入的模塊。這樣做的代價是,運行會慢一些。

總結

以上所述是小編給大家介紹的在 Jupyter 中重新導入特定的 Python 文件的方法,希望對大家有所幫助!

相關文章

  • python如何將數據輸出到文件中

    python如何將數據輸出到文件中

    這篇文章主要介紹了python如何將數據輸出到文件中問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Python函數使用的相關練習題分享

    Python函數使用的相關練習題分享

    這篇文章主要介紹了Python函數使用的相關練習題分享,文章基于python函數內容展開其相關例題,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • Pycharm使用爬蟲時遇到etree紅線問題及解決

    Pycharm使用爬蟲時遇到etree紅線問題及解決

    這篇文章主要介紹了Pycharm使用爬蟲時遇到etree紅線問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python標準庫中的logging用法示例詳解

    Python標準庫中的logging用法示例詳解

    logging是Python標準庫中記錄常用的記錄日志庫,通過logging模塊存儲各種格式的日志,主要用于輸出運行日志,可以設置輸出日志的等級、日志保存路徑、日志文件回滾等,這篇文章主要介紹了Python標準庫中的logging,需要的朋友可以參考下
    2022-09-09
  • Pytorch之卷積層的使用詳解

    Pytorch之卷積層的使用詳解

    今天小編就為大家分享一篇Pytorch之卷積層的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 利用Python創(chuàng)建第一個Django框架程序

    利用Python創(chuàng)建第一個Django框架程序

    這篇文章主要介紹了利用Python創(chuàng)建第一個Django框架程序,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-06-06
  • python 中的list和array的不同之處及轉換問題

    python 中的list和array的不同之處及轉換問題

    python中的list是python的內置數據類型,list中的數據類不必相同的,而array的中的類型必須全部相同。這篇文章給大家介紹了python 中的list和array的不同之處及轉換問題,需要的朋友參考下吧
    2018-03-03
  • python中的垃圾回收(GC)機制

    python中的垃圾回收(GC)機制

    這篇文章主要介紹了python中的GC機制,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • 關于Python的Thread線程模塊詳解

    關于Python的Thread線程模塊詳解

    這篇文章主要介紹了關于Python的Thread線程模塊詳解,進程是程序的一次執(zhí)行,每個進程都有自己的地址空間、內存、數據棧以及其他記錄其運行的輔助數據,需要的朋友可以參考下
    2023-05-05
  • 利用python調用攝像頭的實例分析

    利用python調用攝像頭的實例分析

    在本篇文章里小編給大家整理了一篇關于利用python調用攝像頭的實例分析內容,有需要的朋友們跟著參考下。
    2021-06-06

最新評論

娄底市| 莒南县| 平原县| 玛曲县| 新郑市| 拉萨市| 邓州市| 鄂托克旗| 金平| 濮阳县| 清新县| 古浪县| 日土县| 宁陵县| 中山市| 奉化市| 内乡县| 西吉县| 阳西县| 来宾市| 北票市| 股票| 长沙市| 东辽县| 镇平县| 封丘县| 武邑县| 南康市| 泽库县| 新营市| 日照市| 凤阳县| 岫岩| 水富县| 怀柔区| 鲁山县| 龙井市| 伊宁县| 新兴县| 宝兴县| 崇州市|