]> granicus.if.org Git - python/commitdiff
Issue #20990: Fix issues found by pyflakes for multiprocessing.
authorRichard Oudkerk <shibturn@gmail.com>
Sun, 23 Mar 2014 11:54:15 +0000 (11:54 +0000)
committerRichard Oudkerk <shibturn@gmail.com>
Sun, 23 Mar 2014 11:54:15 +0000 (11:54 +0000)
Lib/multiprocessing/spawn.py
Lib/multiprocessing/synchronize.py
Misc/NEWS

index c8297f3134cb8f901edc8c07b71d727bbecb30f5..8dc48ddd77de3d0a91667cc1a293c9b8206e954d 100644 (file)
@@ -64,7 +64,14 @@ def freeze_support():
     Run code for process object if this in not the main process
     '''
     if is_forking(sys.argv):
-        main()
+        kwds = {}
+        for arg in sys.argv[2:]:
+            name, value = arg.split('=')
+            if value == 'None':
+                kwds[name] = None
+            else:
+                kwds[name] = int(value)
+        spawn_main(**kwds)
         sys.exit()
 
 
@@ -73,7 +80,8 @@ def get_command_line(**kwds):
     Returns prefix of command line used for spawning a child process
     '''
     if getattr(sys, 'frozen', False):
-        return [sys.executable, '--multiprocessing-fork']
+        tmp = ' '.join('%s=%r' % item for item in kwds.items())
+        return [sys.executable, '--multiprocessing-fork'] + tmp
     else:
         prog = 'from multiprocessing.spawn import spawn_main; spawn_main(%s)'
         prog %= ', '.join('%s=%r' % item for item in kwds.items())
index 0e3f6ec2e949ba52776baa9d7c3b4403a9ef1c93..dea1cbd7f0b92ffabda3f31e1d6fd55bf97f6f91 100644 (file)
@@ -49,9 +49,10 @@ class SemLock(object):
     _rand = tempfile._RandomNameSequence()
 
     def __init__(self, kind, value, maxvalue, *, ctx):
-        ctx = ctx or get_context()
-        ctx = ctx.get_context()
-        unlink_now = sys.platform == 'win32' or ctx._name == 'fork'
+        if ctx is None:
+            ctx = context._default_context.get_context()
+        name = ctx.get_start_method()
+        unlink_now = sys.platform == 'win32' or name == 'fork'
         for i in range(100):
             try:
                 sl = self._semlock = _multiprocessing.SemLock(
index 6b527ea440614b62d624769058d5b676fcd1ab9b..2f9afb96988774bd59b7a79e1a582d5ff775c0af 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -21,6 +21,8 @@ Core and Builtins
 Library
 -------
 
+- Issue #20990: Fix issues found by pyflakes for multiprocessing.
+
 - Issue #21015: SSL contexts will now automatically select an elliptic
   curve for ECDH key exchange on OpenSSL 1.0.2 and later, and otherwise
   default to "prime256v1".