aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_concurrent_futures.py
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2023-02-02 15:50:35 -0800
committerGitHub <noreply@github.com>2023-02-02 15:50:35 -0800
commit0ca67e6313c11263ecaef7ce182308eeb5aa6814 (patch)
treeff302df77417456ee4dcf94082b6d942e320b13a /Lib/test/test_concurrent_futures.py
parent618b7a8260bb40290d6551f24885931077309590 (diff)
downloadcpython-0ca67e6313c11263ecaef7ce182308eeb5aa6814.tar.gz
cpython-0ca67e6313c11263ecaef7ce182308eeb5aa6814.zip
GH-84559: Deprecate fork being the multiprocessing default. (#100618)
This starts the process. Users who don't specify their own start method and use the default on platforms where it is 'fork' will see a DeprecationWarning upon multiprocessing.Pool() construction or upon multiprocessing.Process.start() or concurrent.futures.ProcessPool use. See the related issue and documentation within this change for details.
Diffstat (limited to 'Lib/test/test_concurrent_futures.py')
-rw-r--r--Lib/test/test_concurrent_futures.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/Lib/test/test_concurrent_futures.py b/Lib/test/test_concurrent_futures.py
index b3520ae3994..4493cd31252 100644
--- a/Lib/test/test_concurrent_futures.py
+++ b/Lib/test/test_concurrent_futures.py
@@ -18,6 +18,7 @@ import sys
import threading
import time
import unittest
+import warnings
import weakref
from pickle import PicklingError
@@ -571,6 +572,24 @@ class ProcessPoolShutdownTest(ExecutorShutdownTest):
assert all([r == abs(v) for r, v in zip(res, range(-5, 5))])
+@unittest.skipIf(mp.get_all_start_methods()[0] != "fork", "non-fork default.")
+class ProcessPoolExecutorDefaultForkWarning(unittest.TestCase):
+ def test_fork_default_warns(self):
+ with self.assertWarns(mp.context.DefaultForkDeprecationWarning):
+ with futures.ProcessPoolExecutor(2):
+ pass
+
+ def test_explicit_fork_does_not_warn(self):
+ with warnings.catch_warnings(record=True) as ws:
+ warnings.simplefilter("ignore")
+ warnings.filterwarnings(
+ 'always', category=mp.context.DefaultForkDeprecationWarning)
+ ctx = mp.get_context("fork") # Non-default fork context.
+ with futures.ProcessPoolExecutor(2, mp_context=ctx):
+ pass
+ self.assertEqual(len(ws), 0, msg=[str(x) for x in ws])
+
+
create_executor_tests(ProcessPoolShutdownTest,
executor_mixins=(ProcessPoolForkMixin,
ProcessPoolForkserverMixin,