2014-02-27 4 views
2

나는 여러 파이썬 스레드를 포함하는 C++ 프로그램을 만들려고 노력해 왔습니다. 프로그램의 본질 때문에 멀티 태스킹의 이점은 비동기 입출력에서 비롯됩니다. 컨텍스트 스위칭 사이에서 변경해야하는 일부 변수로 인해 스케줄링을 제어해야합니다. 나는 파이썬의 GIL 잠금 때문에 이것이 간단 할 것이라고 생각했지만 파이썬은 소프트웨어 스레드가 아닌 POSIX 스레드를 사용하기를 원한다. 문서의 결과를 저장하면 어떻게 될지 알 수 없다. PyEval_SaveThread()와 동일한 기능에 PyEval_RestoreThread()를 호출하지 않습니다는 - 그래서 아마도 내가 그 일을 할 생각하고 있지 않다 등임베디드 파이썬 프로세스 스케줄링

가 포함 된 파이썬 스레드에 대한 사용자 지정 스케줄러를 만들 수 있습니다, 또는 파이썬은 기본적으로 그렇게 설계되었습니다 할 수 없다고?

답변

1

PyEval_SaveThread()PyEval_RestoreThread()을 사용하는 것은 불필요합니다. 기본적으로 나는 coroutines를 사용하여 스크립트를 실행하고 스케줄링을 제어합니다. 이 경우는 libPCL입니다. 그러나 이것은 실제로 많은 해결책이 아닙니다. 왜냐하면 파이썬이 구문 오류를 만나면 하나의 코 루틴에서 실행중인 파이썬 스크립트가 하나만 있어도 코 루틴에있을 경우 세그 폴트 할 것이기 때문입니다. 그러나 적어도 그들은 서로 갈등하지 않는 것 같습니다.