더 큰 C++ 프로그램의 일부인 Python 플러그인을 구현 중입니다. 이 프로그램의 목적은 사용자가 Python으로 명령의 동작을 입력 할 수있게하는 것입니다. 현재 C++ 함수에서 문자열을 받고 exec() 함수를 통해 실행합니다. 그런 다음 사용자는 API를 사용하여 더 큰 C++ 프로그램의 변경 사항에 영향을 줄 수 있습니다.Python에서 실행 일시 중지
현재 작업하고있는 기능은 일시 중지 실행 기능입니다. 코드 실행 및 모든 로컬 변수의 상태를 기억하고 조건이 충족되면 실행을 다시 시작해야합니다. 파이썬에 대해 잘 알고 있지는 않습니다.이 기능을 구현하는 방법에 대한 조언이 필요합니다. 내 첫 번째 디자인 아이디어 :
1) yield 명령 사용. 이것은 처음에는 좋은 생각 인 것 같았습니다. 다음 명령을 사용할 때 필요한 모든 것을 기억합니다.하지만 문제는 호출 스택의 이전 수준으로 만 수익률이 반환된다는 것입니다. 따라서 사용자가 함수를 호출하면 함수는 더 큰 C++ 프로그램이 아니라 사용자 코드로 돌아갑니다. 늘어나는만큼 스택에 yield 명령을 전파 할 방법이 없다는 것을 알 수 있습니다 ???
2) 스레딩 각 명령에 대한 스레드를 만드는 기본 파이썬 스레드를 만듭니다. 이 주 스레드는 실행 된 각 명령에 대한 스레드를 생성하고 완료되면이를 종료합니다. 일시 중지했다가 다시 시작해야하는 경우 잠금 대기열을 통해 그렇게 할 수 있습니다.
그 두 가지 옵션은 내가 생각해 낸 유일한 옵션이었습니다. yield 함수가 작동하는지 또는 그것이 설계된 것인지 확실하지 않습니다. 스레딩 방식이 효과적 일지는 몰라도 과잉이라고 생각하고 개발하는 데 오랜 시간이 걸릴 것으로 생각합니다. 또한 파이썬에서 일종의 Task Module을 찾고 있었지만 찾고 있던 것을 정확히 찾을 수 없었습니다. 파이썬에 익숙하지 않은 사람이 있다면 다른 제안이 있는지 궁금합니다.
편집 : 의견에서 언급 한대로 스크립트가 "일시 중지"될 때 어떤 일이 발생해야하는지 설명하지 않았습니다. 파이썬 플러그인은 C++ 프로그램이 계속 실행되도록 허용해야합니다. 내 마음 속에서 이것은 A) 단일 쓰레드 접근법에 대해 말하고 있다면 리턴한다. B) 메시지를 함수 호출로 보낸다. 나는 현재 존재하는 것에 대한 더 나은 진술을 가지고 있으며 sudo 코드를 제공 할뿐만 아니라 어떤 일이 일어나야하는지에 대한 또 다른 포스트를 만들 것이다. Stack Overflow에 익숙하지 않아서 이것이 적절한 응답이 아니면 알려주십시오.
나는 개별 단어를 이해하지만, 의사 코드 또는 무언가로 질문을 표현해야한다고 생각한다. 나는 당신의 질문이 무엇인지 이해하지 못한다.'time.sleep'는 파이썬 스크립트를 일시 정지시킬 것이다. 그러나 Im는 당신이 여기에서 묻고있는 것이지 꽤 thats가 아니다라고 확신한다 –
나는 그것을 두 번째로한다. 일정 시간 동안 스크립트를 일시 중지하는 것만으로는 달성 할 수없는 것이 무엇인지 설명해야합니다. 현재 당신이하려는 일을 정확하게 파악하는 것은 어렵습니다. – JBentley
문제점 신고서에 기재 할 내용을 명확히하는 데 도움을 주셔서 감사합니다. – Brian