diff --git a/apps/benchmarks/UniformGridCPU/UniformGridCPU.cpp b/apps/benchmarks/UniformGridCPU/UniformGridCPU.cpp
index a7eb9ecf4fbe63f4a284be147ac0e09e777830d3..bc933c6ad2a449c961a8befaf4988bd8709c03df 100644
--- a/apps/benchmarks/UniformGridCPU/UniformGridCPU.cpp
+++ b/apps/benchmarks/UniformGridCPU/UniformGridCPU.cpp
@@ -213,7 +213,6 @@ int main(int argc, char** argv)
 
          WcTimingPool timeloopTiming;
          WcTimer simTimer;
-
          WALBERLA_MPI_WORLD_BARRIER()
          WALBERLA_LOG_INFO_ON_ROOT("Starting simulation with " << timesteps << " time steps")
 
@@ -250,6 +249,33 @@ int main(int argc, char** argv)
                   pythonCallbackResults.data().exposeValue("nontemporal", nontemporal);
                   pythonCallbackResults.data().exposeValue("cse_global", infoCseGlobal);
                   pythonCallbackResults.data().exposeValue("cse_pdfs", infoCsePdfs);
+
+                  auto exposeTimers = [&pythonCallbackResults](const std::shared_ptr<WcTimingPool>& tp){
+                     std::string parseColumnName(const std::string& columnName) {
+                        std::string parsedName = columnName;
+                        std::replace(parsedName.begin(), parsedName.end(), ' ', '-');
+                        return parsedName;
+                     }
+                     auto& data = pythonCallbackResults.data();
+                     for (auto i = tp->begin(); i != tp->end(); ++i)
+                     {
+                     const std::string timerName = "Timer_" + i->first;
+                     const std::string coulumnName; 
+                     coulumnName = timerName + "_Total";
+                     data.exposeValue(parseColumnName(coulumnName).c_str(), i->second.total());
+                     coulumnName = timerName + "_Average";
+                     data.exposeValue(parseColumnName(coulumnName).c_str(), i->second.average());
+                     coulumnName = timerName + "_Count";
+                     data.exposeValue(parseColumnName(coulumnName).c_str(), i->second.getCounter());
+                     coulumnName = timerName + "_Min";
+                     data.exposeValue(parseColumnName(coulumnName).c_str(), i->second.min());
+                     coulumnName = timerName + "_Max";
+                     data.exposeValue(parseColumnName(coulumnName).c_str(), i->second.max());
+                     coulumnName = timerName + "_Variance";
+                     data.exposeValue(parseColumnName(coulumnName).c_str(), i->second.variance());
+                     }
+                  };
+                  exposeTimers(reducedTimeloopTiming);
                   // Call Python function to report results
                   pythonCallbackResults();
                }