MindSpore解读评注(6)对ccsrc\pipeline\jit\parse\python_adapter.h的部分注释接上篇(5)
对ccsrc\pipeline\jit\parse\python_adapter.h的部分注释接路径:mindspore\ccsrc\pipeline\jit\parse\python_adapter.h h文件是C语言和【C++】语言的头文件,一般在【.h】类的头文件里面只放入函数声明,宏定义,函数原型,而具体的实现在【.cpp】文件里面。C程序的定义文件以.c为后缀,C++程序的定义文件通常以
·
对ccsrc\pipeline\jit\parse\python_adapter.h的部分注释接
路径:mindspore\ccsrc\pipeline\jit\parse\python_adapter.h h文件是C语言和【C++】语言的头文件,一般在【.h】类的头文件里面只放入函数声明,宏定义,函数原型,而具体的实现在【.cpp】文件里面。
C程序的定义文件以.c为后缀,C++程序的定义文件通常以.cpp为后缀(也有一些系统以.cc或.cxx为后缀)
//ifndef可以防止双重定义的错误
#ifndef MINDSPORE_CCSRC_PIPELINE_JIT_PARSE_PYTHON_ADAPTER_H_
#define MINDSPORE_CCSRC_PIPELINE_JIT_PARSE_PYTHON_ADAPTER_H_
#include <map>
#include <memory>
#include <string>
#include "pybind11/embed.h"
#include "pybind11/pybind11.h"
#include "pybind11/stl.h"
//引用自定义头文件
#include "pipeline/jit/parse/parse_base.h"
#include "utils/log_adapter.h"
namespace mindspore {
namespace parse {
// A utility to call python interface
namespace python_adapter {//调用python接口的实用程序
py::module GetPyModule(const std::string &module);//获取Py模块
py::object GetPyObjAttr(const py::object &obj, const std::string &attr);//获取Py目标属性
template <class... T>//模板 可以声明一个通用的类模板,它可以有一个或多个虚拟的类型参数
py::object CallPyObjMethod(const py::object &obj, const std::string &method, T... args) {
//调用Py目标方法
if (!method.empty() && !py::isinstance<py::none>(obj)) {//判断目标方法和实例是不是都为空
return obj.attr(method.c_str())(args...);//返回目标属性
}
return py::none();//返回空标记
}
// call python function of module
//调用模块的python函数
template <class... T>
//可以声明一个通用的类模板,它可以有一个或多个虚拟的类型参数 减少重复的工作
py::object CallPyModFn(const py::module &mod, const std::string &function, T... args) {
//调用Py模块函数
if (!function.empty() && !py::isinstance<py::none>(mod)) {//判断函数是不是和输入事例是不是都不为空
return mod.attr(function.c_str())(args...);//返回相应模块函数
}
return py::none();//返回空标记
}
// turn off the signature when ut use parser to construct a graph.
//使用解析器构造图形时关闭签名。
//先声明和引入函数
void set_use_signature_in_resolve(bool use_signature) noexcept;//在解析中设置使用签名
bool UseSignatureInResolve();//判断是否在解析中使用签名
std::shared_ptr<py::scoped_interpreter> set_python_scoped();//设置python作用域
void ResetPythonScope();//重置Python作用域
bool IsPythonEnv();//判断是否Python env(python环境作用域)
void SetPythonPath(const std::string &path);//加载python模块路径
void set_python_env_flag(bool python_env) noexcept;//设置python环境标志
py::object GetPyFn(const std::string &module, const std::string &name);//获取Py函数
// Call the python function
//调用python函数
template <class... T>
//可以声明一个通用的类模板,它可以有一个或多个虚拟的类型参数 减少重复的工作
py::object CallPyFn(const std::string &module, const std::string &name, T... args) {//调用python函数
(void)set_python_scoped();//调用设置python作用域函数
if (!module.empty() && !name.empty()) {//判断模块和命名空间是不是都不为空
py::module mod = py::module::import(module.c_str());//模块
py::object fn = mod.attr(name.c_str())(args...);//目标函数
return fn;//返回相应函数
}
return py::none();//返回空标记
}
} // namespace python_adapter
} // namespace parse
} // namespace mindspore
#endif // MINDSPORE_CCSRC_PIPELINE_JIT_PARSE_PYTHON_ADAPTER_H_

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)