比方說,我的代碼:堅持過程驗屍的Python的狀態
if __name__ == "__main__":
j = 0
while True:
j = j + 1
print j
time.sleep(1)
,如果我按Ctrl + C,或者如果我在運行中間關閉程序窗口,有沒有什麼辦法來持久化狀態死之前的過程?然後從它死亡的確切點恢復過程?如果不是在Python中,是否有任何其他語言具有此功能?
比方說,我的代碼:堅持過程驗屍的Python的狀態
if __name__ == "__main__":
j = 0
while True:
j = j + 1
print j
time.sleep(1)
,如果我按Ctrl + C,或者如果我在運行中間關閉程序窗口,有沒有什麼辦法來持久化狀態死之前的過程?然後從它死亡的確切點恢復過程?如果不是在Python中,是否有任何其他語言具有此功能?
Crtl + C提高KeyboardInterrupt。你可以把你的代碼放在一個try塊中,然後在退出之前處理KeyboardInterrupt。
import sys
import time
if __name__ == "__main__":
j = 0
try:
while True:
j = j + 1
print(j)
time.sleep(1)
except KeyboardInterrupt:
with open('myprog.dat', 'r') as f:
f.write('j = {}'.format(j))
sys.exit("Data saved!")
您還可以檢查數據文件是否存在,並從數據文件中讀取以初始化j的值。
這可以保存一些數據,而不是程序的狀態。例如,您無法在停止的地方恢復程序。 – chepner 2014-12-07 16:05:20
你是絕對正確的,這是對op問題的一個不好的答案。 – 2014-12-07 16:06:26
https://docs.python.org/2/library/pdb.html#module-pdb效果很好。 Windows Idle有一個體面的帖子異常堆棧查看器。 – wwii 2014-12-07 16:21:58