diff --git a/python/dune/xt/common/CMakeLists.txt b/python/dune/xt/common/CMakeLists.txt index 68557ddca78a851f9092746b297201557c3f05f1..8e5412668cfcfd249d6a3541ae8cffc55757cf95 100644 --- a/python/dune/xt/common/CMakeLists.txt +++ b/python/dune/xt/common/CMakeLists.txt @@ -11,6 +11,6 @@ dune_pybindxi_add_module(_common EXCLUDE_FROM_ALL bindings.cc) dune_pybindxi_add_module(_empty EXCLUDE_FROM_ALL empty.cc) -dune_pybindxi_add_module(_logging EXCLUDE_FROM_ALL logging.cc) +dune_pybindxi_add_module(logging EXCLUDE_FROM_ALL logging.cc) dune_pybindxi_add_module(_timings EXCLUDE_FROM_ALL timings.cc) diff --git a/python/dune/xt/common/__init__.py b/python/dune/xt/common/__init__.py index 0e9bea5c2d6b09ff5dd855d34a40ca71e66b080a..afc6769a4fb31284aaae3c029a6013ace2584998 100644 --- a/python/dune/xt/common/__init__.py +++ b/python/dune/xt/common/__init__.py @@ -15,11 +15,6 @@ from dune.xt import guarded_import for mod_name in ( '_common', - '_logging', - '_timings', ): guarded_import(globals(), 'dune.xt.common', mod_name) -# make sure the singleton exists -timings() - diff --git a/python/dune/xt/common/logging.cc b/python/dune/xt/common/logging.cc index 267a516a8908c5022f83c77833bd38c54310af5a..a4913bee8399a9fd88d282f80c7e2acb1ff3017b 100644 --- a/python/dune/xt/common/logging.cc +++ b/python/dune/xt/common/logging.cc @@ -22,13 +22,13 @@ #include <python/dune/xt/common/exceptions.bindings.hh> -PYBIND11_MODULE(_logging, m) +PYBIND11_MODULE(logging, m) { namespace py = pybind11; using namespace pybind11::literals; using namespace Dune::XT::Common; - Dune::XT::Common::bindings::add_initialization(m, "dune.xt.common", "_logging"); + Dune::XT::Common::bindings::add_initialization(m, "dune.xt.common", "logging"); m.def("create", [](int logflags, const std::string logfile, const std::string datadir, const std::string _logdir) { diff --git a/python/dune/xt/common/timings.cc b/python/dune/xt/common/timings.cc index e3942f3689291fde67a628ada4412256bb31d3fa..4c187ac6be482fe5938cd21ff46f7ac03bfbe547 100644 --- a/python/dune/xt/common/timings.cc +++ b/python/dune/xt/common/timings.cc @@ -29,21 +29,23 @@ PYBIND11_MODULE(_timings, m) using namespace pybind11::literals; using namespace Dune::XT::Common; - Dune::XT::Common::bindings::add_initialization(m, "dune.xt.common", "_timings"); - - py::class_<Timings>(m, "Timings") - .def("start", &Timings::start, "set this to begin a named section") - .def("reset", py::overload_cast<std::string>(&Timings::reset), "set elapsed time back to 0 for section_name") - .def("reset", py::overload_cast<>(&Timings::reset), "set elapsed time back to 0 for section_name") - .def("stop", py::overload_cast<std::string>(&Timings::stop), "stop all timer for given section only") - .def("stop", py::overload_cast<>(&Timings::stop), "stop all running timers") - .def("walltime", &Timings::walltime, "get runtime of section in milliseconds") - //! TODO this actually accepts an ostream - .def("output_simple", [](Timings& self) { self.output_simple(); }, "outputs per-rank csv-file") - .def("output_per_rank", &Timings::output_per_rank, "outputs walltime only") - //! TODO this actually accepts an MPICOMM and an ostream too - .def("output_all_measures", - [](Timings& self) { self.output_all_measures(); }, - "outputs per rank and global averages of all measures"); - m.def("timings", &timings, py::return_value_policy::reference); + bindings::add_initialization(m, "dune.xt.common", "_timings"); + + bindings::try_register(m, [](auto& m_) { + py::class_<Timings>(m_, "Timings") + .def("start", &Timings::start, "set this to begin a named section") + .def("reset", py::overload_cast<std::string>(&Timings::reset), "set elapsed time back to 0 for section_name") + .def("reset", py::overload_cast<>(&Timings::reset), "set elapsed time back to 0 for section_name") + .def("stop", py::overload_cast<std::string>(&Timings::stop), "stop all timer for given section only") + .def("stop", py::overload_cast<>(&Timings::stop), "stop all running timers") + .def("walltime", &Timings::walltime, "get runtime of section in milliseconds") + //! TODO this actually accepts an ostream + .def("output_simple", [](Timings& self) { self.output_simple(); }, "outputs per-rank csv-file") + .def("output_per_rank", &Timings::output_per_rank, "outputs walltime only") + //! TODO this actually accepts an MPICOMM and an ostream too + .def("output_all_measures", + [](Timings& self) { self.output_all_measures(); }, + "outputs per rank and global averages of all measures"); + m_.def("instance", &timings, py::return_value_policy::reference); + }); } diff --git a/python/dune/xt/common/logging.py b/python/dune/xt/common/timings.py similarity index 77% rename from python/dune/xt/common/logging.py rename to python/dune/xt/common/timings.py index 8cc8cf178f1d9dd75d7e2bcf07d2bc6e6ddd1b69..27f4615ca5f46555da29f32a85f526ccb450480a 100644 --- a/python/dune/xt/common/logging.py +++ b/python/dune/xt/common/timings.py @@ -6,7 +6,12 @@ # or GPL-2.0+ (http://opensource.org/licenses/gpl-license) # with "runtime exception" (http://www.dune-project.org/license.html) # Authors: -# René Fritze (2018 - 2019) +# René Fritze (2018) # ~~~ -from dune.xt._logging import * +from dune.xt import guarded_import + +guarded_import(globals(), 'dune.xt.common', '_timings') + +instance() + diff --git a/python/test/base.py b/python/test/base.py index ad8a0020d6a7d3f6a3f20f01f2917ba5ab0e8670..0a77ea82a22a9438da920d6ab64f7178537f1219 100644 --- a/python/test/base.py +++ b/python/test/base.py @@ -39,7 +39,8 @@ def test_logging(): def test_timings(): - from dune.xt.common.timings import timings + from dune.xt.common.timings import instance + timings = instance() timings.reset() timings.start("foo.bar") timings.stop()