From e4b94aba778b1e638d25da9d7f6db6ac4555556e Mon Sep 17 00:00:00 2001 From: Samuel Gaist <samuel.gaist@idiap.ch> Date: Wed, 17 Mar 2021 13:53:54 +0100 Subject: [PATCH] [test][prefix][algorithms] Workaround multiprocess changes in macOS Python 3.8 The default implementation for the multiprocess changed from fork to spawn on macOS with Python 3.8. This merge request forces the use of fork for the tests on macOS. The runner will anyway use Linux so taking more time to solve this particular issue would not make much sense. --- .../prefix/algorithms/autonomous/multiprocess/1.py | 14 +++++++++++--- .../prefix/algorithms/sequential/multiprocess/1.py | 14 +++++++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) 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 c000d7f..6a1f015 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 f5389eb..cd2939f 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() -- GitLab