Skip to content

Commit bb26543

Browse files
committed
[GR-74172] Remove graalpy multiprocessing backend
PullRequest: graalpython/4653
2 parents 824733a + 0bc4890 commit bb26543

30 files changed

Lines changed: 120 additions & 2106 deletions

graalpython/com.oracle.graal.python.test/src/tests/conftest.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ partial_splits_individual_tests = true
2020
# on Windows, yet, add their files here.
2121
exclude_on = ['win32', 'win32-github']
2222
selector = [
23-
"test_multiprocessing_graalpy.py", # import _winapi
2423
"test_pathlib.py",
2524
"test_posix.py", # import posix
2625
"test_pyio.py", # pyio imports msvcrt

graalpython/com.oracle.graal.python.test/src/tests/test_entropy_subprocess.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@
4848
from tests.util import needs_capi
4949

5050

51+
POSIX_BACKEND_IS_JAVA = sys.implementation.name == "graalpy" and __graalpython__.posix_module_backend() == "java"
52+
53+
5154
@unittest.skipUnless(sys.implementation.name == "graalpy" and sys.platform.startswith("linux"), "Linux GraalPy-specific test")
5255
class EntropySubprocessTests(unittest.TestCase):
5356
HASH_SECRET_BYTES = 24
@@ -180,6 +183,7 @@ def test_multiprocessing_process_import_does_not_use_initrandom(self):
180183
"ok",
181184
)
182185

186+
@unittest.skipIf(POSIX_BACKEND_IS_JAVA, "multiprocessing doesn't work on Java POSIX backend")
183187
def test_multiprocessing_deliver_challenge_does_not_use_additional_initrandom(self):
184188
self.assert_initrandom_bytes_used(
185189
self.RANDOM_MODULE_BYTES,

graalpython/com.oracle.graal.python.test/src/tests/test_multiprocessing.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
1+
# Copyright (c) 2022, 2026, Oracle and/or its affiliates. All rights reserved.
22
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
33
#
44
# The Universal Permissive License (UPL), Version 1.0
@@ -42,16 +42,16 @@
4242
import unittest
4343

4444

45+
POSIX_BACKEND_IS_JAVA = sys.implementation.name == 'graalpy' and __graalpython__.posix_module_backend() == 'java'
46+
47+
48+
@unittest.skipIf(POSIX_BACKEND_IS_JAVA, "multiprocessing doesn't work on emulated backend")
4549
class MultiprocessingTest(unittest.TestCase):
4650
@classmethod
4751
def tearDownClass(cls):
4852
import multiprocessing.resource_tracker
4953
multiprocessing.resource_tracker._resource_tracker._stop()
5054

51-
@unittest.skipIf(
52-
sys.implementation.name == 'graalpy' and __graalpython__.posix_module_backend() == 'java',
53-
reason="TODO multiprocessing.Array doesn't work on emulated backend",
54-
)
5555
def test_array_read(self):
5656
# This used to be buggy due to wrong usage of memoryview offsets when two objects were allocated in the same block
5757
# Don't remove the unused value on the next line

graalpython/com.oracle.graal.python.test/src/tests/test_multiprocessing_graalpy.py

Lines changed: 0 additions & 104 deletions
This file was deleted.

graalpython/com.oracle.graal.python.test/src/tests/timings-darwin.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,6 @@
166166
"graalpython/com.oracle.graal.python.test/src/tests/test_module_property.py": 0.01,
167167
"graalpython/com.oracle.graal.python.test/src/tests/test_mro.py": 0.03,
168168
"graalpython/com.oracle.graal.python.test/src/tests/test_multiprocessing.py": 0.2,
169-
"graalpython/com.oracle.graal.python.test/src/tests/test_multiprocessing_graalpy.py": 9.08,
170169
"graalpython/com.oracle.graal.python.test/src/tests/test_nonlocal.py": 0.0,
171170
"graalpython/com.oracle.graal.python.test/src/tests/test_object.py": 0.0,
172171
"graalpython/com.oracle.graal.python.test/src/tests/test_operator.py": 0.01,
@@ -233,4 +232,4 @@
233232
"graalpython/com.oracle.graal.python.test/src/tests/test_yield_from.py": 0.03,
234233
"graalpython/com.oracle.graal.python.test/src/tests/test_zipimport.py": 0.05,
235234
"graalpython/com.oracle.graal.python.test/src/tests/test_zlib.py": 0.02
236-
}
235+
}

graalpython/com.oracle.graal.python.test/src/tests/timings-linux.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,6 @@
169169
"graalpython/com.oracle.graal.python.test/src/tests/test_module_property.py": 0.07999999999999999,
170170
"graalpython/com.oracle.graal.python.test/src/tests/test_mro.py": 0.0,
171171
"graalpython/com.oracle.graal.python.test/src/tests/test_multiprocessing.py": 0.36,
172-
"graalpython/com.oracle.graal.python.test/src/tests/test_multiprocessing_graalpy.py": 9.059999999999999,
173172
"graalpython/com.oracle.graal.python.test/src/tests/test_nonlocal.py": 0.0,
174173
"graalpython/com.oracle.graal.python.test/src/tests/test_object.py": 0.0,
175174
"graalpython/com.oracle.graal.python.test/src/tests/test_operator.py": 0.0,
@@ -236,4 +235,4 @@
236235
"graalpython/com.oracle.graal.python.test/src/tests/test_yield_from.py": 0.01,
237236
"graalpython/com.oracle.graal.python.test/src/tests/test_zipimport.py": 0.060000000000000005,
238237
"graalpython/com.oracle.graal.python.test/src/tests/test_zlib.py": 0.03
239-
}
238+
}

graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_multiprocessing_graalpy.txt

Lines changed: 0 additions & 18 deletions
This file was deleted.

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/PythonLanguage.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import java.util.Map;
4646
import java.util.WeakHashMap;
4747
import java.util.concurrent.ConcurrentHashMap;
48-
import java.util.concurrent.Semaphore;
4948
import java.util.logging.Level;
5049

5150
import org.graalvm.collections.EconomicMap;
@@ -343,20 +342,6 @@ public boolean isSingleContext() {
343342
@CompilationFinal(dimensions = 1) public static final PythonAbstractObject[] CONTEXT_INSENSITIVE_SINGLETONS = new PythonAbstractObject[]{PNone.NONE, PEllipsis.INSTANCE,
344343
PNotImplemented.NOT_IMPLEMENTED};
345344

346-
/**
347-
* Named semaphores are shared between all processes in a system, and they persist until the
348-
* system is shut down, unless explicitly removed. We interpret this as meaning they all exist
349-
* globally per language instance, that is, they are shared between different Contexts in the
350-
* same engine.
351-
*
352-
* Top level contexts use this map to initialize their shared multiprocessing data. Inner
353-
* children contexts created for the multiprocessing module ignore this map in
354-
* {@link PythonLanguage} and instead inherit it in the shared multiprocessing data from their
355-
* parent context. This way, the child inner contexts do not have to run in the same engine
356-
* (have the same language instance), but can still share the named semaphores.
357-
*/
358-
public final ConcurrentHashMap<TruffleString, Semaphore> namedSemaphores = new ConcurrentHashMap<>();
359-
360345
@CompilationFinal(dimensions = 1) private volatile Object[] engineOptionsStorage;
361346
@CompilationFinal private volatile OptionValues engineOptions;
362347
@CompilationFinal private boolean useNativePrimitiveStorage;

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/Python3Core.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,6 @@
195195
import com.oracle.graal.python.builtins.modules.lzma.LZMACompressorBuiltins;
196196
import com.oracle.graal.python.builtins.modules.lzma.LZMADecompressorBuiltins;
197197
import com.oracle.graal.python.builtins.modules.lzma.LZMAModuleBuiltins;
198-
import com.oracle.graal.python.builtins.modules.multiprocessing.GraalPySemLockBuiltins;
199-
import com.oracle.graal.python.builtins.modules.multiprocessing.MultiprocessingGraalPyModuleBuiltins;
200198
import com.oracle.graal.python.builtins.modules.multiprocessing.MultiprocessingModuleBuiltins;
201199
import com.oracle.graal.python.builtins.modules.multiprocessing.SemLockBuiltins;
202200
import com.oracle.graal.python.builtins.modules.pickle.PickleBufferBuiltins;
@@ -765,8 +763,6 @@ private static PythonBuiltins[] initializeBuiltins(TruffleLanguage.Env env) {
765763
// _multiprocessing
766764
PythonImageBuildOptions.WITHOUT_NATIVE_POSIX ? null : new MultiprocessingModuleBuiltins(),
767765
PythonImageBuildOptions.WITHOUT_NATIVE_POSIX ? null : new SemLockBuiltins(),
768-
new MultiprocessingGraalPyModuleBuiltins(),
769-
new GraalPySemLockBuiltins(),
770766

771767
new WarningsModuleBuiltins(),
772768
new GraalPythonModuleBuiltins(),

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/PythonBuiltinClassType.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@
124124
import com.oracle.graal.python.builtins.modules.lsprof.ProfilerBuiltins;
125125
import com.oracle.graal.python.builtins.modules.lzma.LZMACompressorBuiltins;
126126
import com.oracle.graal.python.builtins.modules.lzma.LZMADecompressorBuiltins;
127-
import com.oracle.graal.python.builtins.modules.multiprocessing.GraalPySemLockBuiltins;
128127
import com.oracle.graal.python.builtins.modules.multiprocessing.SemLockBuiltins;
129128
import com.oracle.graal.python.builtins.modules.pickle.PickleBufferBuiltins;
130129
import com.oracle.graal.python.builtins.modules.pickle.PicklerBuiltins;
@@ -635,7 +634,6 @@ passed as positional arguments to zip(). The i-th element in every tuple
635634
PLock("LockType", PythonObject, newBuilder().publishInModule(J__THREAD).disallowInstantiation().slots(CommonLockBuiltins.SLOTS, LockTypeBuiltins.SLOTS)),
636635
PRLock("RLock", PythonObject, newBuilder().publishInModule(J__THREAD).basetype().slots(CommonLockBuiltins.SLOTS, RLockBuiltins.SLOTS)),
637636
PSemLock("SemLock", PythonObject, newBuilder().publishInModule("_multiprocessing").basetype().slots(SemLockBuiltins.SLOTS)),
638-
PGraalPySemLock("SemLock", PythonObject, newBuilder().publishInModule("_multiprocessing_graalpy").basetype().slots(GraalPySemLockBuiltins.SLOTS)),
639637
PSocket("socket", PythonObject, newBuilder().publishInModule(J__SOCKET).basetype().slots(SocketBuiltins.SLOTS)),
640638
PStaticmethod("staticmethod", PythonObject, newBuilder().publishInModule(J_BUILTINS).basetype().addDict(24).slots(StaticmethodBuiltins.SLOTS).doc("""
641639
staticmethod(function) -> method

0 commit comments

Comments
 (0)