Pyslvs 開發進度
- 演算法中斷機制
演算法中斷機制
研究許久 Cython 的外部中斷迴圈,一直沒有找到較好的方式。
大部分 github 的參考都是藉由 Python 的 threading 模組達成的,但是這樣可能又得改寫演算法模組的物件。
因此後來運用運算進度條檢查 function object 的機制做出中斷的方法。
傳入的 function object 被 call 時會回傳 QThread 的暫停狀態 self.stoped
,Cython 即可判斷是否終止,若為 True,會在當前代數停下,回傳本代最佳解。
而對話方塊端新增了「Interrupt」鈕,按下此鈕時會中止運算,收下當前最佳解。
而原本的「Cancel」鈕則會捨棄這次演算結果。
不過目前還未增加中斷的資訊,接下來應該會增加標籤圖示,並且顯示中斷時的代數供參考。
中斷結果的數據通常未必能成形,大多數都是非合法的連桿機構。
Comments
comments powered by Disqus