MCPcopy Index your code
hub / github.com/python/cpython / start

Method start

Lib/multiprocessing/managers.py:539–580  ·  view source on GitHub ↗

Spawn a server process for this manager object

(self, initializer=None, initargs=())

Source from the content-addressed store, hash-verified

537 self._state.value = State.STARTED
538
539 def start(self, initializer=None, initargs=()):
540 '''
541 Spawn a server process for this manager object
542 '''
543 if self._state.value != State.INITIAL:
544 if self._state.value == State.STARTED:
545 raise ProcessError("Already started server")
546 elif self._state.value == State.SHUTDOWN:
547 raise ProcessError("Manager has shut down")
548 else:
549 raise ProcessError(
550 "Unknown state {!r}".format(self._state.value))
551
552 if initializer is not None and not callable(initializer):
553 raise TypeError('initializer must be a callable')
554
555 # pipe over which we will retrieve address of server
556 reader, writer = connection.Pipe(duplex=False)
557
558 # spawn process which runs a server
559 self._process = self._ctx.Process(
560 target=type(self)._run_server,
561 args=(self._registry, self._address, self._authkey,
562 self._serializer, writer, initializer, initargs),
563 )
564 ident = ':'.join(str(i) for i in self._process._identity)
565 self._process.name = type(self).__name__ + '-' + ident
566 self._process.start()
567
568 # get address of server
569 writer.close()
570 self._address = reader.recv()
571 reader.close()
572
573 # register a finalizer
574 self._state.value = State.STARTED
575 self.shutdown = util.Finalize(
576 self, type(self)._finalize_manager,
577 args=(self._process, self._address, self._authkey, self._state,
578 self._Client, self._shutdown_timeout),
579 exitpriority=0
580 )
581
582 @classmethod
583 def _run_server(cls, registry, address, authkey, serializer, writer,

Callers 1

__enter__Method · 0.95

Calls 8

ProcessErrorClass · 0.85
strFunction · 0.85
PipeMethod · 0.80
formatMethod · 0.45
ProcessMethod · 0.45
joinMethod · 0.45
closeMethod · 0.45
recvMethod · 0.45

Tested by

no test coverage detected