A hopefully simple example calling python from C using PyRun_File, and getting information returned to C via the globals/locals dictionary.
#include <Python.h> #include <stdio.h> #include <stdint.h> int main(int argc,char *argv[]) { FILE* file; Py_Initialize(); PyObject* main_module = PyImport_AddModule("__main__"); PyObject* main_dict = PyModule_GetDict(main_module); file = fopen("mypython.py","r"); PyRun_File(file, "mypython.py",Py_file_input,main_dict,main_dict); printf("size %d\n",PyDict_Size(main_dict)); PyObject* mybytes = PyDict_GetItemString(main_dict,"mybytes"); printf("%p\n",mybytes); uint64_t* data = (uint64_t*)PyBytes_AsString(mybytes); printf("%d %d\n",data[0],data[1]); Py_Finalize(); return 0; }
import numpy as np print("hello") mybytes = np.array([1,2]).tobytes() print(type(mybytes))
gcc -o junk junk.cc -I $CONDA_PREFIX/include/python3.6m -L $CONDA_PREFIX/lib/ -l python3.6m
Overview
Content Tools