In Linux, when you start a child process, it is Forked. It means that the child process inherits the memory state of the parent process. On Windows (and by default on Mac), however, processes are Spawned.

Even though processes usually speed up the execution of a program by using multiple cores on a computer, starting each process can be time-consuming.

The fact that on Windows and Mac Python needs to pickle the objects to create child processes adds an overhead that may offset the benefits of running on separated processes. It is especially relevant when you have many small tasks to perform, instead of a couple of long-running ones.

Therefore, when using processes, instead of threads, improving the speed of the program is not granted. You should always benchmark your application to understand where and how different components can affect its behavior.