2017-03-07 109 views
0

是否可以保存Jython程序的狀態?我希望能夠保存所有已定義的變量和程序所在的當前行,重新啓動整個事件,然後從此處繼續。我看着Pickling,但只是序列化一個類,而不是整個狀態。我認爲我需要的是像無堆棧Python那樣的Continuation。我可以在Jython中做到嗎?Jython保存程序狀態

我的Python文件看起來像這樣:

def main() 
    engine.blockingMethod() 
    testVar = engine.blockingMethodReturn() 
    if(testVar == "a"): 
     methodA() 
    else: 
     methodB() 
def methodA() 
    engine.blockingMethod() 
def methodB() 
    engine.blockingMethod() 

我的程序需要能後的任何這些方法退出。由於if聲明,我無法在加載文件時讀取它們全部。我不知道如何採取相應措施,因爲當用戶想要退出時,我的程序沒有完全運行。我這樣運行:

pyScript.start(); 
System.out.println("Done") 

在單獨的線程中,因爲大多數是我從我的Python文件調用的方法阻塞。我可以保存先前的操作,然後運行該文件,直到達到保存的歷史記錄的最後一個,但由於語句爲if,這不起作用。所以當玩家按下Exit按鈕時,我需要保存狀態並殺死線程。像這樣:https://www.renpy.org/doc/html/save_load_rollback.html

+0

線程肯定會導致夏季困難。不過,我不明白你最近的編輯。如果您可以在小代碼示例中重現問題,這將有所幫助。你不需要展示你的整個遊戲。剛剛創建了一個模擬您正在詢問的部分的新程序。 –

+0

@ Code-Apprentice我添加了一個鏈接到一個引擎的文檔,不會像我想要的那樣保存 –

+0

@ Code-Apprentice我在我的手機上,但我會盡力把東西扔在一起 –

回答

0

您當然可以保存變量的值。這是一個文件的全部目的。

您無法輕鬆保存您所在的代碼行。程序應該在已知的執行點退出,以便在重新啓動時自動知道如何繼續。

+0

我需要能夠在任何時間點退出。我更新了我的問題 –

+0

@LórántViktorGerber當main()結束時,程序退出。這是明確定義的,不是「任何即時的」。 –

+0

@ Code-Apprenrice這是一款遊戲。遊戲開始時,我打電話給main。當主要目標結束時,遊戲也結束。但玩家需要有能力隨時點擊退出按鈕,保存並在以後繼續 –

0

有可能是一個更簡單的方法,但我最終使自己的Python解析器