27 #ifndef LBANN_UTILS_PYTHON_HPP_INCLUDED 28 #define LBANN_UTILS_PYTHON_HPP_INCLUDED 31 #ifdef LBANN_HAS_EMBEDDED_PYTHON 35 typedef struct _object PyObject;
72 void check_error(
bool force_error =
false);
84 class global_interpreter_lock
87 global_interpreter_lock();
88 ~global_interpreter_lock();
91 global_interpreter_lock(
const global_interpreter_lock&) =
delete;
92 global_interpreter_lock& operator=(
const global_interpreter_lock&) =
delete;
122 object(PyObject* ptr);
125 object(
const std::string& val);
133 object(
const object& other);
135 object& operator=(
const object& other);
137 object(
object&& other) noexcept;
139 object& operator=(
object&& other);
143 inline PyObject*
get() noexcept {
return m_ptr; }
145 inline const PyObject*
get()
const noexcept {
return m_ptr; }
147 inline operator PyObject*() noexcept {
return get(); }
149 inline operator const PyObject*()
const noexcept {
return get(); }
154 PyObject* release() noexcept;
157 operator std::
string();
165 PyObject* m_ptr =
nullptr;
171 #endif // LBANN_HAS_EMBEDDED_PYTHON 172 #endif // LBANN_UTILS_PYTHON_HPP_INCLUDED
world_comm_ptr initialize(int &argc, char **&argv)
void finalize(lbann_comm *comm=nullptr)