diff --git a/onnxruntime/python/onnxruntime_pybind_state.cc b/onnxruntime/python/onnxruntime_pybind_state.cc index 239db50b11..937e8bcbf5 100644 --- a/onnxruntime/python/onnxruntime_pybind_state.cc +++ b/onnxruntime/python/onnxruntime_pybind_state.cc @@ -938,6 +938,7 @@ void addGlobalMethods(py::module& m, Environment& env) { throw std::runtime_error("Error when creating and registering allocator: " + st.ErrorMessage()); } }); + m.def("unload_shared_providers", &UnloadSharedProviders, "Unload the shared providers (needs to be done for a safe shutdown)"); #ifdef USE_NUPHAR // TODO remove deprecated global config @@ -2097,9 +2098,9 @@ PYBIND11_MODULE(onnxruntime_pybind11_state, m) { LOGS(default_logger, WARNING) << "Init provider bridge failed."; } - atexit([] { - UnloadSharedProviders(); - }); +// atexit([] { +// UnloadSharedProviders(); +// }); #endif #ifdef ENABLE_TRAINING diff --git a/onnxruntime/test/python/onnxruntime_test_python.py b/onnxruntime/test/python/onnxruntime_test_python.py index 316dec756b..14d782573b 100644 --- a/onnxruntime/test/python/onnxruntime_test_python.py +++ b/onnxruntime/test/python/onnxruntime_test_python.py @@ -930,5 +930,12 @@ class TestInferenceSession(unittest.TestCase): set()) print("Create session with customize execution provider successfully!") + def testUnloadSharedProviders(self): + + print("Unloading shared providers") + from onnxruntime.capi import _pybind_state as C + C.unload_shared_providers() + print("Finished unloading") + if __name__ == '__main__': unittest.main()