小编bgs*_*aid的帖子

在C/C++中嵌入IPython-shell - 程序

我有一个C++程序,它允许我运行C++传递数据的Python脚本.如果Python脚本失败,C++程序会调用PyRun_InteractiveLoop来调查交互式shell上的问题.这工作正常,但我认为"如果安装IPython会很酷,我可以在这种情况下使用它".

现在我的问题是:我在寻找"ipython嵌入"时发现的是如何将IPython嵌入到Python程序中的说明(其中包括http://ipython.org/ipython-doc/dev/interactive/reference.html#embedding- ipython).我尝试在嵌入式常规python-shell上重现这些,但是大多数都以某种方式失败(通常是因为缺少sys.argv ......我可以解决这个问题).

有什么建议怎么做?我的第一个计划是首先通过C-API导入IPython(我得到了覆盖).如果失败则使用"常规"shell.否则通过PyRun_InteractiveOneFlags调用IPython.embed()(或类似的)

c++ python ipython

8
推荐指数
1
解决办法
991
查看次数

用C++短路`operator <<`输出

我有一些代码,像这样的构造

if(debug) {
    Output << "f1: " << f1() << "\n";
}
Run Code Online (Sandbox Code Playgroud)

现在我想要做的是编写一个流类Debug,我可以像这样编写它

Debug << "f1: " << f1() << "\n";
Run Code Online (Sandbox Code Playgroud)

如果设置了某个全局标志,那么这将生成输出,否则不会.

现在:通过Debug返回一个/dev/null吞噬输出的流可以很容易地做到这一点.问题是f1()仍然会被评估(并"渲染"成文本表示,这可能会更加昂贵),这可能对性能非常不利.

现在我的问题是:是否有任何技巧可以跳过"评估"

"f1: " << f1() << "\n"
Run Code Online (Sandbox Code Playgroud)

完全如果Debug决定不应该输出?到短路是C++做类似的f() && g()地方g(),如果不计算f()false(我认真考虑编写一个使用流类&&作为输出操作,但是从我读短路没有重载完成operator&&)

c++

4
推荐指数
1
解决办法
518
查看次数

标签 统计

c++ ×2

ipython ×1

python ×1