?? 作者:韓信子@ShowMeAI
?? Python3?技能提升系列:https://www.showmeai.tech/tutorials/56
?? 本文地址:https://www.showmeai.tech/article-detail/406
?? 宣告:著作權所有,轉載請聯系平臺與作者并注明出處
?? 收藏ShowMeAI查看更多精彩內容
?? 引言
在運行 Python 腳本時,我經常發現自己忘記列印所有必要的詳細資訊來跟蹤代碼專案的進度和中間資訊,我們經常在訓練機器學習模型時遇到各種各樣的資訊記錄問題,當然,問題不僅限于機器學習,像爬蟲等場景也需要做大量記錄,但我們經常在運行起代碼之后才意識到忘記做一些需要記錄的資訊輸出,
如果我們暫停運行的代碼,重新修改補充代碼并運行,代價可能是我們已經訓練數個小時的模型引數被舍棄而重新訓練,這是非常不值當的,在python中,有另外一項技術可以解決這個問題,在本篇內容中,我們就來給大家講講python的熱加載技術,
?? Reloading庫
??Reloading 是一個 Python工具庫,它讓我們可以在每次迭代之前從源代碼中重新加載(或函式),我們可以修改已經運行的代碼并向其添加更多詳細資訊,而不會丟失任何當前已執行程序,
我們可以通過以下命令安裝reloading:
pip install reloading
?? 重新加載回圈體代碼
假設我們有一個回圈,它完成一個簡單的功能:每次迭代后將值減半,但我們忘記在這個回圈中列印迭代次數了,現在想修改它,
from time import sleep
value = https://www.cnblogs.com/showmeai/archive/2022/12/13/100
iterations = 10
for iteration in range(iterations):
print(f"value = https://www.cnblogs.com/showmeai/archive/2022/12/13/{value}")
value = https://www.cnblogs.com/showmeai/archive/2022/12/13/value/2
sleep(2)
不借助reloading,我們只能重新運行它,
但是,借助 reloading,我們可以重新加載回圈體代碼,如下所示:
from time import sleep
from reloading import reloading
value = https://www.cnblogs.com/showmeai/archive/2022/12/13/100
iterations = 10
for iteration in reloading(range(iterations)):
print(f"value = https://www.cnblogs.com/showmeai/archive/2022/12/13/{value}")
value = https://www.cnblogs.com/showmeai/archive/2022/12/13/value/2
sleep(2)
動圖演示如下:
?? 重新加載修改后的函式
與重新加載回圈體代碼類似,我們也可以在每次迭代后重新加載函式體,以函式 half_value為例:
from time import sleep
def half_value(value):
print(f"value = https://www.cnblogs.com/showmeai/archive/2022/12/13/{value}")
value = https://www.cnblogs.com/showmeai/archive/2022/12/13/value/2
return value
value = 100
iterations = 10
for iteration in range(iterations):
value = half_value(value)
sleep(2)
要重新加載函式體,我們可以使用 reloading構建裝飾器,如下所示:
from time import sleep
from reloading import reloading
@reloading
def half_value(value):
print(f"value = https://www.cnblogs.com/showmeai/archive/2022/12/13/{value}")
value = https://www.cnblogs.com/showmeai/archive/2022/12/13/value/2
return value
value = 100
iterations = 10
for iteration in range(iterations):
value = half_value(value)
sleep(2)
修改之后,我們可以在運行時修改函式,動圖演示如下:
參考資料
- ?? Reloading 的GitHub網址:https://github.com/julvo/reloading
推薦閱讀
- ?? 資料分析實戰系列 :https://www.showmeai.tech/tutorials/40
- ?? 機器學習資料分析實戰系列:https://www.showmeai.tech/tutorials/41
- ?? 深度學習資料分析實戰系列:https://www.showmeai.tech/tutorials/42
- ?? TensorFlow資料分析實戰系列:https://www.showmeai.tech/tutorials/43
- ?? PyTorch資料分析實戰系列:https://www.showmeai.tech/tutorials/44
- ?? NLP實戰資料分析實戰系列:https://www.showmeai.tech/tutorials/45
- ?? CV實戰資料分析實戰系列:https://www.showmeai.tech/tutorials/46
- ?? AI 面試題庫系列:https://www.showmeai.tech/tutorials/48
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/539835.html
標籤:其他
上一篇:深入理解Whitelabel Error Page底層原始碼
下一篇:spring boot 跨域
