我是 Python C-API 的新手。
目前我通过以下方式从嵌入式 Python 模块获取对象
PyObject* a = (PyObject*) PyObject_GetAttrString(pModule, "a");
std::cout << "a as long is " << PyLong_AsLong(a) << std::endl;
Run Code Online (Sandbox Code Playgroud)
我通过访问 numpy 对象
PyArrayObject* array = (PyArrayObject*) PyObject_GetAttrString(pModule, "A");
Run Code Online (Sandbox Code Playgroud)
如何测试该对象是否真的是 a PyArrayObject?换句话说,如何通过 Python 来做我想做的事情isinstance(a, numpy.ndarray)?
对于学术数值项目,我们主要使用 pardiso(来自 mkl)和 cholmod 作为直接求解器。现在我切换到 Apple Silicon(速度惊人,构建时间缩短了四分之一!)并且无法再使用 Intel 的 mkl 进行本机编译。