Idle once used os.spawnv to open the user subprocess and 2.7 still does. Sockets were then used to interact with the subprocess. Since rev71746, 2011-8-3, 3.2+ use subprocess.Popen but still use sockets. A rare but continual problem is failure to make the socket connection. In #16123, Amaury Forgeot d'Arc suggested "pipes?" The idea resurfaced again in current Idle-sig thread "Idle does not open on mac" (because socket connection timed out). Guido, who designed the current 2.x system, chimed in with "I would recommend trying to use the subprocess module." A current python-list thread indicates that there can be problems with "Running a command line program and reading the result as it runs" http://mail.python.org/pipermail/python-list/2013-August/654265.html In particular, "for line in p:" gets lines delayed (buffered) while Peter Otten discovered that "for line in iter(p.stdout.readline, ''):" gets them as they are produced. http://mail.python.org/pipermail/python-list/2013-August/654330.html We first need to experiment running a simple echo server with python(w).exe. I have not succeeded yet on Windows.
Pydev, Re: Status of PEP 3145 - Asynchronous I/O for subprocess.popen; Antoine Pitrou: > Why don't you use multiprocessing or concurrent.futures? They have > everything you need for continuous conversation between processes.
Problems with multiprocessing and tkinter on Mac might have been due to using the default start method, which used to be fork and is now spawn. This should be retested sometime.