暂停/恢复嵌入式python解释器

时间:2013-02-22 10:07:26

标签: python-c-api python

是否有可能在我需要的地方暂停/恢复嵌入式python解释器的工作?例如:

C ++伪代码部分:

main()
{
     script = "python_script.py";
     ...

     RunScript(script); //-- python script runs till the command 'stop'
     while(true)
     {
          //... read values from some variables in python-script
          //... do some work ...
          //... write new value to some other variables in python-script
          ResumeScript(script); //-- python script resumes it's work where
                                // it was stopped. Not from begin!
     }
     ...
}

Python脚本伪代码部分:

#... do some init-work
while true:
       #... do some work
       stop # - here script stops and C++-function RunScript() 
            # returns control to C++-part
       #... After calling C++-function ResumeScript 
       # the work continues from this line

这可能与Python / C API有关吗?

由于

1 个答案:

答案 0 :(得分:0)

我最近一直在寻找一种手动“驱动”嵌入式语言的方法,我遇到了这个问题,并认为我会分享一个潜在的解决方法。

我会通过套接字或某种消息系统实现“阻塞”行为。而不是实际停止整个python解释器,只是让它在等待C ++进行评估时阻塞。

C ++将启动嵌入式运行时,然后进入某种类型的循环,等待python“抛出信号”它已准备就绪。例如,C ++侦听端口5000,启动python,python确实工作,连接到localhost上的端口5000,然后C ++看到连接并从python中获取数据,对其执行工作,然后将数据从套接字反转回python,然后python接收数据并离开阻塞循环。

我仍然需要一种方法来完全暂停虚拟运行时,但在你的情况下,你可以使用套接字和使用套接字来协调两段代码的一些阻塞行为来实现相同的功能。

祝你好运:)

编辑:您可以将此答案中使用的“注入”功能挂钩以完全停止python。只需修改它以注入等待循环。

Stopping embedded Python