我正在實現一個Python插件,它是更大的C++程序的一部分。該程序的目標是允許用戶在Python中輸入命令的操作。它目前從C++函數接收一個字符串,並通過exec()函數運行它。然後用戶可以使用API來影響較大C++程序的更改。在Python中暫停執行
我正在處理的當前功能是暫停執行功能。它需要記住它在代碼執行中的位置以及任何局部變量的狀態,並且一旦滿足條件就恢復執行。我對Python不是很熟悉,我想要一些建議如何實現這個功能。我的第一個設計思路:
1)使用yield命令。 這在開始時似乎是一個好主意,因爲當你使用下一個命令時,它會記住我需要的所有東西,但問題是yield只能返回到調用堆棧中的前一級別,據我所知。所以如果用戶調用一個產生它的函數,它將簡單地返回到用戶的代碼,而不是更大的C++程序。據我所知,沒有辦法將yield命令傳播到堆棧中?
2)線程 創建一個主python線程爲每個命令創建一個線程。這個主線程會爲每個執行的命令產生一個線程,並在完成時將其終止。如果需要暫停和重新啓動,可以通過鎖隊列來完成。
這是我提出的唯一兩個選項。我不確定yield函數是可行的還是它的設計目的。我認爲線程方法可行,但可能是過度的,需要很長時間才能發展。我也在Python中尋找某種任務模塊,但找不到我正在尋找的東西。我想知道是否有人有任何其他建議,因爲我對Python不太熟悉。
編輯:正如評論中提到的,我沒有解釋腳本「暫停」時需要發生什麼。 python插件需要允許C++程序繼續執行。在我看來,這意味着A)返回,如果我們正在談論單線程方法,或B)發送消息(函數調用?)到C++
編輯編輯:如上所述,我沒有完全解釋問題描述。我將做出另一篇文章,對目前存在的內容以及需要發生的事情以及提供一些sudo代碼做更好的說明。我是Stack Overflow的新手,所以如果這不是合適的答案,請讓我知道。
我瞭解單詞,但我認爲你需要在僞代碼或其他內容中表達你的問題......我不明白你的問題是什麼......'''time.sleep'會使python腳本暫停......但林相當肯定這不是你在這裏問 –
我第二。你需要解釋一下你想要的東西,只要讓你的腳本暫停一段時間就無法實現。目前很難準確掌握你想要做什麼。 – JBentley
感謝您幫助澄清我需要包含在我的問題陳述中的內容。 – Brian