首頁 > 軟體

用這2個工具可在Python檔案更改時自動重新載入

2021-05-22 02:00:06

您是否運行過for迴圈並希望在for迴圈內的程式碼中新增更多詳細資訊?

您可能會決定不這樣做,因為新增更多詳細資訊意味著您需要停止進度並重新運行所有內容。

如果程式碼已經運行了幾個小時,則停止進度尤其不理想。如果您可以在每次迭代中重新載入迴圈體而不丟失如下所示的狀態,那不是很好嗎?

在本文中,我將向您展示兩個工具,這些工具可在Python檔案更改時重新載入程式碼或運行任意命令。

Entr —當您的Python檔案更改時運行任意命令

這個工具是怎麼運作的呢?

entr允許您在檔案更改時運行任意命令。為了瞭解entr會有什麼幫助,讓我們想象一下我們想創建一個函數,該函數接受一個數字列表並返回偶數。

我們將檔案命名為entr_examples.py,然後使用pytest檢查get_evens函數是否返回偶數。

$ pytest entr_examples.py

測試失敗,因為我們尚未向get_evens函數新增任何程式碼。要嘗試以其他方式獲取偶數,請在程式碼更改時使用entr重新運行pytest entr_examples.py命令。

$ ls entr_examples.py | entr python entr_examples.py

通過使用entr,我們無需在開發功能時再次重新運行同一命令。

由於「測試驅動開發」的第一條法則是「除非編寫了失敗的單元測試,否則您不得編寫生產程式碼」,因此entr鼓勵開發人員以其他方式測試編寫程式碼的方法,直到其起作用為止。

請注意,如果要一次跟蹤多個Python檔案,請使用ls * .py |輸入command_to_runinstead。這意味著,如果要跟蹤的任何檔案被更改,則將執行command_to_run。

要在MacOS上安裝entr,請輸入:

brew install entr

要在Ubuntu上安裝entr,請輸入:

sudo apt-get install entr

另一個選擇是克隆entr repo並按照安裝說明進行操作。

重新載入-重新載入迴圈主體而不會丟失其狀態

Reloading是一個Python庫,允許您在每次迭代中重新載入迴圈體而不會丟失其狀態。

要了解重新載入的作用,請想象您編寫了一個列印偶數的Python迴圈。但是,在迴圈運行時,您還希望它在不停止迴圈的情況下輸出奇數。

通常,這無法在Python中完成。在下面的程式碼中,即使我們在執行過程中將print(f'{num}是奇數')新增到迴圈主體中,輸出中也沒有奇數。

但是,可以很容易地通過重新載入來完成。

在執行過程中向迴圈體中新增else語句後,將顯示出奇數!

重新載入在這裡似乎並沒有真正的幫助,因為執行for迴圈不需要花費很長時間。但是,如果您已經訓練了數小時的深度學習模型,並且想要在每個紀元中列印更多統計資訊而不停止迴圈,這將變得非常方便。

好了,本文到此結束。如果對程式設計、計算機、程式設計師方面感興趣的話,歡迎私信聯絡我,隨時交流!點個關注,是對我莫大的鼓勵!


IT145.com E-mail:sddin#qq.com