mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Issue #18999: Make multiprocessing use context objects.
This allows different parts of a program to use different methods for starting processes without interfering with each other.
This commit is contained in:
parent
3e4b52875e
commit
b1694cf588
20 changed files with 733 additions and 611 deletions
|
@ -4,8 +4,8 @@ import signal
|
|||
import sys
|
||||
import _winapi
|
||||
|
||||
from . import context
|
||||
from . import spawn
|
||||
from . import popen
|
||||
from . import reduction
|
||||
from . import util
|
||||
|
||||
|
@ -60,15 +60,15 @@ class Popen(object):
|
|||
util.Finalize(self, _winapi.CloseHandle, (self.sentinel,))
|
||||
|
||||
# send information to child
|
||||
popen.set_spawning_popen(self)
|
||||
context.set_spawning_popen(self)
|
||||
try:
|
||||
reduction.dump(prep_data, to_child)
|
||||
reduction.dump(process_obj, to_child)
|
||||
finally:
|
||||
popen.set_spawning_popen(None)
|
||||
context.set_spawning_popen(None)
|
||||
|
||||
def duplicate_for_child(self, handle):
|
||||
assert self is popen.get_spawning_popen()
|
||||
assert self is context.get_spawning_popen()
|
||||
return reduction.duplicate(handle, self.sentinel)
|
||||
|
||||
def wait(self, timeout=None):
|
||||
|
@ -97,7 +97,3 @@ class Popen(object):
|
|||
except OSError:
|
||||
if self.wait(timeout=1.0) is None:
|
||||
raise
|
||||
|
||||
@staticmethod
|
||||
def ensure_helpers_running():
|
||||
pass
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue