Si usa make, emita con -j
. De man make
:
-j [jobs], --jobs[=jobs]
Specifies the number of jobs (commands) to run simultaneously.
If there is more than one -j option, the last one is effective.
If the -j option is given without an argument, make will not limit the
number of jobs that can run simultaneously.
Y lo más notable, si desea escribir o identificar la cantidad de núcleos que tiene disponibles (dependiendo de su entorno, y si se ejecuta en muchos entornos, esto puede cambiar mucho) puede usar la función ubicua de Python cpu_count()
:
https://docs.python.org/3/library/multiprocessing.html#multiprocessing.cpu_count
Me gusta esto:
make -j $(python3 -c 'import multiprocessing as mp; print(int(mp.cpu_count() * 1.5))')
Si está preguntando por qué 1.5
citaré al usuario artless-noise en un comentario anterior:
El número 1.5 se debe al problema vinculado de E / S observado. Es una regla de oro. Aproximadamente 1/3 de los trabajos estarán esperando E / S, por lo que los trabajos restantes utilizarán los núcleos disponibles. Un número mayor que los núcleos es mejor e incluso podría llegar hasta 2x.