2014-12-07 16 views
0

比方說,我的代碼:堅持過程驗屍的Python的狀態

if __name__ == "__main__": 
    j = 0 
    while True: 
     j = j + 1 
     print j 
     time.sleep(1) 

,如果我按Ctrl + C,或者如果我在運行中間關閉程序窗口,有沒有什麼辦法來持久化狀態死之前的過程?然後從它死亡的確切點恢復過程?如果不是在Python中,是否有任何其他語言具有此功能?

+0

https://docs.python.org/2/library/pdb.html#module-pdb效果很好。 Windows Idle有一個體面的帖子異常堆棧查看器。 – wwii 2014-12-07 16:21:58

回答

-1

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的值。

+0

這可以保存一些數據,而不是程序的狀態。例如,您無法在停止的地方恢復程序。 – chepner 2014-12-07 16:05:20

+0

你是絕對正確的,這是對op問題的一個不好的答案。 – 2014-12-07 16:06:26