gpt4 book ai didi

python - 如何嵌入在 C++ 中设置标志的 python 代码

转载 作者:行者123 更新时间:2023-11-30 04:49:01 25 4
gpt4 key购买 nike

我找不到在 https://docs.python.org/3.5/extending/embedding.html 处嵌入在 C++ 代码中设置标志的 python 代码的方法。 .

我有这个 python 代码test.py:

import tensorflow as tf

# Settings
flags = tf.app.flags
FLAGS = flags.FLAGS

#core params..
flags.DEFINE_string('model', 'gcn', 'model name')
flags.DEFINE_float('learning_rate', 0.01, 'initial learning rate')
flags.DEFINE_string("model_size", "small", "define model size")


def main(argv=None):
print("Flags Set")
print(FLAGS.learning_rate)

if __name__ == '__main__':
tf.app.run()

当我执行命令时:

python -m test --learning_rate 0.0002

输出是:

Flags Set
0.0002

如何在 C++ 中嵌入上述 python 代码并调用它?

最佳答案

你有两个选择,

1. 只需使用 system() 执行 python 脚本,

system("python -m /path/to/test.py  --learning_rate 0.0002");

2.使用Python/C Api如下,

#include <python3.6/Python.h>
#include<iostream>
using namespace std;

int main(int argc, char *argv[])
{
FILE* file;
wchar_t *program = Py_DecodeLocale(argv[0], NULL);
wchar_t** _argv;
for(int i=0; i<argc; i++){
wchar_t *arg = Py_DecodeLocale(argv[i], NULL);
_argv[i] = arg;
}
Py_SetProgramName(program);
Py_Initialize();
PySys_SetArgv(argc, _argv);
file = fopen("/path/to/test.py","r");
PyRun_SimpleFile(file, "/path/to/test.py");
Py_Finalize();
return 0;
}

如果你在a.out中得到一个可执行文件,你可以像下面这样运行它,

./a.out --learning_rate 0.0002

注意:-我在 python3.6m 文件夹中有 Python.h,我使用标志 -lpython3.6m 进行编译。

关于python - 如何嵌入在 C++ 中设置标志的 python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55566301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com