我有一個python腳本,它首先讀取幾個大文件,然後執行其他操作。由於我想多次運行這個腳本並更改一些代碼,直到我對結果滿意爲止,如果腳本不必每次重新讀取文件都會很好,因爲它們不會改變。所以我主要想用它來進行調試。調試首先需要讀取大文件的python腳本。我必須每次重新加載它們嗎?
我經常碰到這樣的情況:我在其中運行有錯誤的腳本,但是分鐘後我只能看到錯誤信息,因爲閱讀時間很長。
是否有任何技巧可以做到這一點?
(如果可行,我創建更小的測試文件)
我有一個python腳本,它首先讀取幾個大文件,然後執行其他操作。由於我想多次運行這個腳本並更改一些代碼,直到我對結果滿意爲止,如果腳本不必每次重新讀取文件都會很好,因爲它們不會改變。所以我主要想用它來進行調試。調試首先需要讀取大文件的python腳本。我必須每次重新加載它們嗎?
我經常碰到這樣的情況:我在其中運行有錯誤的腳本,但是分鐘後我只能看到錯誤信息,因爲閱讀時間很長。
是否有任何技巧可以做到這一點?
(如果可行,我創建更小的測試文件)
我不擅長Python,但它似乎能夠從一個變化的模塊動態加載代碼:How to re import an updated package while in Python Interpreter?
其他一些與Python沒有直接關係的建議。
首先,嘗試創建一個較小的測試文件。是否需要整個文件來演示您正在觀察的錯誤?很可能它只是你輸入文件的一小部分是相關的。其次,這些特定文件是否需要,或問題會顯示在任何大量的數據?如果它僅顯示特定文件,那麼再次最有可能與這些文件的某些功能有關,並且將顯示在具有相同功能的較小文件上。如果主要原因只是大量數據,那麼您可以通過直接在腳本中生成一些隨機數據來避免讀取它。
第三,讀取文件的瓶頸是什麼?難道只是硬盤性能問題,還是在實際進入產生問題的部分之前,對腳本中的讀取數據進行了大量處理?在後一種情況下,您可能可以執行一次處理並將結果寫入新文件,然後修改腳本以加載此處理的數據,而不是每次重新處理。
如果硬盤性能問題,請考慮更快的文件系統。例如,在Linux上,您可能可以使用/dev/shm
。
您是否需要一次讀取整個文件,或者是否可以重構代碼以逐行讀取它? – Eric
@Eric:在這種情況下,我真的需要立即整個文件。 – Godrebh
也許我可以使用交互式python來讀取文件,然後從那裏運行腳本,然後可以通過導入使用數據? – Godrebh