refactor importClass and valgrind
This commit is contained in:
@@ -37,27 +37,25 @@ namespace pywrap {
|
||||
}
|
||||
void PyWrap::importClass(const clfId_t id, const std::string& moduleName, const std::string& className)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(mutex);
|
||||
auto result = moduleClassMap.find(id);
|
||||
if (result != moduleClassMap.end()) {
|
||||
return;
|
||||
}
|
||||
CPyObject module = PyImport_ImportModule(moduleName.c_str());
|
||||
std::cout << "1a" << std::endl;
|
||||
PyObject* module = PyImport_ImportModule(moduleName.c_str());
|
||||
if (PyErr_Occurred()) {
|
||||
errorAbort("Couldn't import module " + moduleName);
|
||||
}
|
||||
CPyObject classObject = PyObject_GetAttrString(module, className.c_str());
|
||||
PyObject* classObject = PyObject_GetAttrString(module, className.c_str());
|
||||
if (PyErr_Occurred()) {
|
||||
errorAbort("Couldn't find class " + className);
|
||||
}
|
||||
CPyObject instance = PyObject_CallObject(classObject, NULL);
|
||||
PyObject* instance = PyObject_CallObject(classObject, NULL);
|
||||
if (PyErr_Occurred()) {
|
||||
errorAbort("Couldn't create instance of class " + className);
|
||||
}
|
||||
std::lock_guard<std::mutex> lock(mutex);
|
||||
module.AddRef();
|
||||
classObject.AddRef();
|
||||
instance.AddRef();
|
||||
moduleClassMap.insert({ id, { module.getObject(), classObject.getObject(), instance.getObject() } });
|
||||
moduleClassMap.insert({ id, { module, classObject, instance } });
|
||||
}
|
||||
void PyWrap::clean(const clfId_t id)
|
||||
{
|
||||
|
@@ -1,5 +1,15 @@
|
||||
#include "XGBoost.h"
|
||||
|
||||
|
||||
|
||||
|
||||
See https ://stackoverflow.com/questions/36071672/using-xgboost-in-c
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
namespace pywrap {
|
||||
std::string XGBoost::version()
|
||||
{
|
||||
|
Reference in New Issue
Block a user