to screen redrawsmouse clicksand so on parallel processing comes to the rescue heretoo by performing such long-running tasks in parallel with the rest of the programthe system at large can remain responsive no matter how busy some of its parts may be moreoverthe parallel processing model is natural fit for structuring such programs and otherssome tasks are more easily conceptualized and coded as components running as independentparallel entities there are two fundamental ways to get tasks running at the same time in python-process forks and spawned threads functionallyboth rely on underlying operating system services to run bits of python code in parallel procedurallythey are very different in terms of interfaceportabilityand communication for instanceat this writing direct process forks are not supported on windows under standard python (though they are under cygwin python on windowsby contrastpython' thread support works on all major platforms moreoverthe os spawn family of calls provides additional ways to launch programs in platformneutral way that is similar to forksand the os popen and os system calls and subprocess module we studied in and can be used to portably spawn programs with shell commands the newer multiprocessing module offers additional ways to run processes portably in many contexts in this which is continuation of our look at system interfaces available to python programmerswe explore python' built-in tools for starting tasks in parallelas well as communicating with those tasks in some sensewe've already begun doing so--os systemos popenand subprocesswhich we learned and applied over the last three are fairly portable way to spawn and speak with command-line programstoo we won' repeat full coverage of those tools here insteadour emphasis in this is on introducing more direct techniques--forksthreadspipessignalssocketsand other launching techniques--and on using python' built-in tools that support themsuch as the os fork call and the threadingqueueand multiprocessing modules in the next (and in the remainder of this book)we use these techniques in more realistic programsso be sure you understand the basics here before flipping ahead one note up frontalthough the processthreadand ipc mechanisms we will explore in this are the primary parallel processing tools in python scriptsthe third party domain offers additional options which may serve more advanced or specialized roles as just one examplethe mpi for python system allows python scripts to also employ the message passing interface (mpistandardallowing python programs to exploit multiple processors in various ways (see the web for detailswhile such specific extensions are beyond our scope in this bookthe fundamentals of multiprocessing that we will explore here should apply to more advanced techniques you may encounter in your parallel futures parallel system tools