Thanks to the wrapper, running an external command comes down to calling a function. We can go the low-level way and do much of this ourselves using the Python subprocess module, but luckily, Python also offers a wrapper that will take care of all the nitty-gritty details, and do so safely too. That copy, in turn, replaces itself with another process: the process you were looking to execute. First, the process forks itself, creating a copy. We can utilize this same technique to start another process, though. This can be useful if you want to parallelize your code and utilize multiple CPUs on your machine. The process forks itself, meaning a new copy of the process is created and started.
What happens internally (inside the OS kernel) is what’s called a fork. A parent process spawning two sub-processes