diff --git a/mlair/data_handler/default_data_handler.py b/mlair/data_handler/default_data_handler.py
index 6fa7952d4bc0a278f17f767073969822924b6d5f..68aff5947743dfdc66f95d93d5b8b284a87789d8 100644
--- a/mlair/data_handler/default_data_handler.py
+++ b/mlair/data_handler/default_data_handler.py
@@ -309,6 +309,7 @@ class DefaultDataHandler(AbstractDataHandler):
                 os.remove(_res_file)
                 transformation_dict = cls.update_transformation_dict(dh, transformation_dict)
             pool.close()
+            pool.join()
         else:  # serial solution
             logging.info("use serial transformation approach")
             sp_keys.update({"return_strategy": "result"})
diff --git a/mlair/plotting/data_insight_plotting.py b/mlair/plotting/data_insight_plotting.py
index 8d4ab2689b1eea24dc9d39d53b04e51405a3a874..47051a500c29349197f3163861a0fe40cade525d 100644
--- a/mlair/plotting/data_insight_plotting.py
+++ b/mlair/plotting/data_insight_plotting.py
@@ -711,6 +711,7 @@ class PlotPeriodogram(AbstractPlotClass):  # pragma: no cover
                 for i, p in enumerate(output):
                     res.append(p.get())
                 pool.close()
+                pool.join()
             else:  # serial solution
                 for var in d[self.variables_dim].values:
                     res.append(f_proc(var, d.loc[{self.variables_dim: var}].squeeze().dropna(self.time_dim)))
@@ -735,6 +736,7 @@ class PlotPeriodogram(AbstractPlotClass):  # pragma: no cover
             for i, p in enumerate(output):
                 res.append(p.get())
             pool.close()
+            pool.join()
         else:
             for g in generator:
                 res.append(f_proc_2(g, m, pos, self.variables_dim, self.time_dim, self.f_index, use_last_input_value))
diff --git a/mlair/run_modules/pre_processing.py b/mlair/run_modules/pre_processing.py
index 873919fa93af3e4a43c3b16c382d9746ec26a573..116a37b305fbe0c2e81dd89bd8ba43257d29a61c 100644
--- a/mlair/run_modules/pre_processing.py
+++ b/mlair/run_modules/pre_processing.py
@@ -266,6 +266,7 @@ class PreProcessing(RunEnvironment):
                     collection.add(dh)
                     valid_stations.append(s)
             pool.close()
+            pool.join()
         else:  # serial solution
             logging.info("use serial validate station approach")
             kwargs.update({"return_strategy": "result"})