2014-02-23 55 views
1

我有一個效率低下的模擬運行(它已運行約24小時)。終止Python程序,但恢復數據

它可以分成3個獨立的部分,所以我想取消模擬,並開始一個更高效的模擬,但仍然恢復已經爲第一部分計算的數據。

例如,在程序中發生錯誤時,您仍然可以訪問腳本正在處理的數據,並檢查它以查看出錯的地方。

有沒有辦法在不丟失數據的情況下手動殺死進程?

+0

這取決於您如何以及在何處評分數據以及腳本的外觀如何,但是如果您使用命令行中的-i選項啓動腳本,則會在異常後返回到python shell並且應該能夠從那裏手動檢查堆棧。 – Moritz

+0

我正在使用IDLE。數據只是存儲在一個列表中。 –

+0

只需將數據寫入文件並在每個條目寫入文件後進行刷新即可。在你終止python解釋器之後,該文件包含目前爲止所有內容。 –

回答

2

您可以在單獨的會話中啓動一個調試器,如winpdb或幾個IDE調試器中的任意一個,附加到正在運行的進程(暫停它),在有權訪問的代碼段中設置一個斷點到你的數據,恢復直到你到達中斷點,然後將你的數據保存到一個文件中,然後你的新進程可以加載這些數據作爲起點。