调度嵌入式python进程

时间:2014-02-27 22:31:54

标签: python c++ multithreading scheduler

我一直在尝试创建一个嵌入多个python线程的C ++程序。由于程序的性质,多任务处理的优势来自异步I / O;但由于某些变量需要在上下文切换之间进行更改,我需要控制调度。我认为因为python的GIL锁定这很简单,但事实证明不是:python想要使用POSIX线程而不是软件线程,我无法从文档中弄清楚如果我存储结果会发生什么PyEval_SaveThread()并且不要在同一个函数中调用PyEval_RestoreThread() - 所以我可能不应该这样做等等。

是否可以为嵌入式python线程创建自定义调度程序,或者python是否基本上设计为无法完成?

1 个答案:

答案 0 :(得分:1)

事实证明,使用PyEval_SaveThread()PyEval_RestoreThread()是不必要的,基本上我使用协同程序来运行脚本并控制调度。在这种情况下来自libPCL。然而,这并不是一个很好的解决方案,因为如果python遇到语法错误,如果它在协程中就会出现段错误,奇怪的是,即使在一个协程中只运行一个python脚本,这仍然会发生。但至少他们似乎并不相互冲突。