The script already lets you choose how many process do you want to execute in parallel

changed to shell=False.

I have found some problems while implementing this stuff:
* As I had kept the pipe to comunicate with the process, although the process had ended its work, it had became a zombie process. (I had a reference to the process so It was not deleted)
To fix it I create a dictionary to store the relation: file descriptor - subprocess pipe, and when the process ends I modify the information of the dictionary to: file descriptor - output given by the process; so I drop the reference to the subprocess and it is deleted so there are no more zombie
* Other problem was that when a process ends, if I free the fd associated to its output pipe (to let the process be eliminated by the garbage collector), another process can take the same fd number so the dictionary becomes useless.
The solution consists into take another dictionary and store in it the outputs of the ended processes, indexed by pid of the subprocess that generated it, instead of the fd
I have adapted the script to the simple version we were talking about on github. It's so much cleaner than the older version of the script.