treat Py_Finalize() more like MPI_Finalize()
this is done by - not automatically calling Py_Finalize() when destructing a python interpreter - adding wrapper functions so that the call to Py_Finalize() is hidden and skipped if Python support is no included. - call the Python::finalize() wrapper in main.cpp (similar to the equivalent Kokkos function) - add a wrapper of that call to the C library interface
This commit is contained in:
@ -63,10 +63,6 @@ PythonImpl::PythonImpl(LAMMPS *lmp) : Pointers(lmp)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// one-time initialization of Python interpreter
|
||||
// pyMain stores pointer to main module
|
||||
external_interpreter = Py_IsInitialized();
|
||||
|
||||
#ifdef MLIAP_PYTHON
|
||||
// Inform python intialization scheme of the mliappy module.
|
||||
// This -must- happen before python is initialized.
|
||||
@ -108,12 +104,6 @@ PythonImpl::~PythonImpl()
|
||||
}
|
||||
}
|
||||
|
||||
// shutdown Python interpreter
|
||||
if (!external_interpreter) {
|
||||
PyGILState_Ensure();
|
||||
Py_Finalize();
|
||||
}
|
||||
|
||||
memory->sfree(pfuncs);
|
||||
}
|
||||
|
||||
@ -545,3 +535,10 @@ bool PythonImpl::has_minimum_version(int major, int minor)
|
||||
{
|
||||
return (PY_MAJOR_VERSION == major && PY_MINOR_VERSION >= minor) || (PY_MAJOR_VERSION > major);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
|
||||
void PythonImpl::finalize()
|
||||
{
|
||||
if (Py_IsInitialized()) Py_Finalize();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user