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

Method start_subprocess

Lib/idlelib/pyshell.py:442–483  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

440 return [sys.executable] + w + ["-c", command, str(self.port)]
441
442 def start_subprocess(self):
443 addr = (HOST, self.port)
444 # GUI makes several attempts to acquire socket, listens for connection
445 for i in range(3):
446 time.sleep(i)
447 try:
448 self.rpcclt = MyRPCClient(addr)
449 break
450 except OSError:
451 pass
452 else:
453 self.display_port_binding_error()
454 return None
455 # if PORT was 0, system will assign an 'ephemeral' port. Find it out:
456 self.port = self.rpcclt.listening_sock.getsockname()[1]
457 # if PORT was not 0, probably working with a remote execution server
458 if PORT != 0:
459 # To allow reconnection within the 2MSL wait (cf. Stevens TCP
460 # V1, 18.6), set SO_REUSEADDR. Note that this can be problematic
461 # on Windows since the implementation allows two active sockets on
462 # the same address!
463 self.rpcclt.listening_sock.setsockopt(socket.SOL_SOCKET,
464 socket.SO_REUSEADDR, 1)
465 self.spawn_subprocess()
466 #time.sleep(20) # test to simulate GUI not accepting connection
467 # Accept the connection from the Python execution server
468 self.rpcclt.listening_sock.settimeout(10)
469 try:
470 self.rpcclt.accept()
471 except TimeoutError:
472 self.display_no_subprocess_error()
473 return None
474 self.rpcclt.register("console", self.tkconsole)
475 self.rpcclt.register("stdin", self.tkconsole.stdin)
476 self.rpcclt.register("stdout", self.tkconsole.stdout)
477 self.rpcclt.register("stderr", self.tkconsole.stderr)
478 self.rpcclt.register("flist", self.tkconsole.flist)
479 self.rpcclt.register("linecache", linecache)
480 self.rpcclt.register("interp", self)
481 self.transfer_path(with_cwd=True)
482 self.poll_subprocess()
483 return self.rpcclt
484
485 def restart_subprocess(self, with_cwd=False, filename=''):
486 if self.restarting:

Callers 1

beginMethod · 0.80

Calls 12

spawn_subprocessMethod · 0.95
transfer_pathMethod · 0.95
poll_subprocessMethod · 0.95
MyRPCClientClass · 0.85
sleepMethod · 0.45
getsocknameMethod · 0.45
setsockoptMethod · 0.45
settimeoutMethod · 0.45
acceptMethod · 0.45
registerMethod · 0.45

Tested by

no test coverage detected