diff --git a/beat/backend/python/test/prefix/algorithms/autonomous/multiprocess/1.py b/beat/backend/python/test/prefix/algorithms/autonomous/multiprocess/1.py
index c000d7f0fc82e5deb6462626a36367400efe3b05..6a1f015a9b5d866cf47bd3786646ee52aa19c094 100755
--- a/beat/backend/python/test/prefix/algorithms/autonomous/multiprocess/1.py
+++ b/beat/backend/python/test/prefix/algorithms/autonomous/multiprocess/1.py
@@ -34,6 +34,8 @@
 ###################################################################################
 
 import multiprocessing
+import platform
+import sys
 
 
 def foo(queue_in, queue_out, index):
@@ -64,14 +66,20 @@ class Algorithm:
 
         num_thread = data_loader.count()
 
-        queue_in = multiprocessing.JoinableQueue(num_thread)
+        version = sys.version_info
+        if platform.system() == "Darwin" and version[0] == 3 and version[1] >= 8:
+            ctx = multiprocessing.get_context("fork")
+        else:
+            ctx = multiprocessing.get_context()
+
+        queue_in = ctx.JoinableQueue(num_thread)
         queue_out = []
 
         # Start worker processes
         jobs = []
         for i in range(num_thread):
-            queue_out.append(multiprocessing.Queue())
-            p = multiprocessing.Process(target=foo, args=(queue_in, queue_out[i], i))
+            queue_out.append(ctx.Queue())
+            p = ctx.Process(target=foo, args=(queue_in, queue_out[i], i))
             jobs.append(p)
             p.start()
 
diff --git a/beat/backend/python/test/prefix/algorithms/sequential/multiprocess/1.py b/beat/backend/python/test/prefix/algorithms/sequential/multiprocess/1.py
index f5389ebdee740a2303e4359c0770f454a5882e2d..cd2939ff290fa66a5c9aeeda7b9f85cde003a8e6 100755
--- a/beat/backend/python/test/prefix/algorithms/sequential/multiprocess/1.py
+++ b/beat/backend/python/test/prefix/algorithms/sequential/multiprocess/1.py
@@ -34,6 +34,8 @@
 ###################################################################################
 
 import multiprocessing
+import platform
+import sys
 
 
 def foo(queue_in, queue_out, index):
@@ -64,14 +66,20 @@ class Algorithm:
 
         num_thread = data_loader.count()
 
-        queue_in = multiprocessing.JoinableQueue(num_thread)
+        version = sys.version_info
+        if platform.system() == "Darwin" and version[0] == 3 and version[1] >= 8:
+            ctx = multiprocessing.get_context("fork")
+        else:
+            ctx = multiprocessing.get_context()
+
+        queue_in = ctx.JoinableQueue(num_thread)
         queue_out = []
 
         # Start worker processes
         jobs = []
         for i in range(num_thread):
-            queue_out.append(multiprocessing.Queue())
-            p = multiprocessing.Process(target=foo, args=(queue_in, queue_out[i], i))
+            queue_out.append(ctx.Queue())
+            p = ctx.Process(target=foo, args=(queue_in, queue_out[i], i))
             jobs.append(p)
             p.start()