Interprocess Communication
As we saw earlier, when scripts spawn threads—tasks that run in parallel within the program—they can naturally communicate by changing and inspecting shared global memory. As we also saw, some care must be taken to use locks to synchronize access to shared objects that can’t be updated concurrently, but it’s a fairly straightforward communication model.
Things aren’t quite as simple when scripts start processes and programs. If we limit the kinds of communications that can happen between programs, many options are available, most of which we’ve already seen in this and the prior chapters. For example, the following can all be interpreted as cross-program communication devices:
Command-line arguments
Standard stream redirections
Pipes generated by
os.popen
callsProgram exit status codes
Shell environment variables
Simple files
Sockets, shared memory, signals, named pipes, and so on
For instance, sending command-line options and writing to input
streams lets us pass in program execution parameters; reading program
output streams and exit codes gives us a way to grab a result. Because
shell variable settings are inherited by spawned programs, they
provide another way to pass context in. Pipes made by os.popen
and simple files allow even more
dynamic communication. Data can be sent between programs at arbitrary
times, not only at program start and exit.
Beyond this set, there are other tools in the Python library for performing Inter-Process Communication (IPC). ...
Get Programming Python, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.