Skip to content
Snippets Groups Projects
Commit 14ab5074 authored by Samuel GAIST's avatar Samuel GAIST
Browse files

Merge branch 'macos_multiprocess_workaround' into 'master'

Workaround multiprocess changes in macOS Python 3.8

See merge request !81
parents c75c4518 e4b94aba
Branches
Tags v2.1.0
1 merge request!81Workaround multiprocess changes in macOS Python 3.8
Pipeline #48803 passed
...@@ -34,6 +34,8 @@ ...@@ -34,6 +34,8 @@
################################################################################### ###################################################################################
import multiprocessing import multiprocessing
import platform
import sys
def foo(queue_in, queue_out, index): def foo(queue_in, queue_out, index):
...@@ -64,14 +66,20 @@ class Algorithm: ...@@ -64,14 +66,20 @@ class Algorithm:
num_thread = data_loader.count() 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 = [] queue_out = []
# Start worker processes # Start worker processes
jobs = [] jobs = []
for i in range(num_thread): for i in range(num_thread):
queue_out.append(multiprocessing.Queue()) queue_out.append(ctx.Queue())
p = multiprocessing.Process(target=foo, args=(queue_in, queue_out[i], i)) p = ctx.Process(target=foo, args=(queue_in, queue_out[i], i))
jobs.append(p) jobs.append(p)
p.start() p.start()
......
...@@ -34,6 +34,8 @@ ...@@ -34,6 +34,8 @@
################################################################################### ###################################################################################
import multiprocessing import multiprocessing
import platform
import sys
def foo(queue_in, queue_out, index): def foo(queue_in, queue_out, index):
...@@ -64,14 +66,20 @@ class Algorithm: ...@@ -64,14 +66,20 @@ class Algorithm:
num_thread = data_loader.count() 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 = [] queue_out = []
# Start worker processes # Start worker processes
jobs = [] jobs = []
for i in range(num_thread): for i in range(num_thread):
queue_out.append(multiprocessing.Queue()) queue_out.append(ctx.Queue())
p = multiprocessing.Process(target=foo, args=(queue_in, queue_out[i], i)) p = ctx.Process(target=foo, args=(queue_in, queue_out[i], i))
jobs.append(p) jobs.append(p)
p.start() p.start()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment