starmap set_start_method parallelize how from python subprocess multiprocessing

python - set_start_method - ¿Cuál es la diferencia entre multiprocesamiento y subproceso?



python pool process (3)

El módulo de subprocess permite ejecutar y controlar otros programas. Cualquier cosa que pueda comenzar con la línea de comando en la computadora, se puede ejecutar y controlar con este módulo. Use esto para integrar programas externos en su código de Python.

El módulo de multiprocessing permite dividir las tareas escritas en python en múltiples procesos para ayudar a mejorar el rendimiento. Proporciona una API muy similar al módulo de threading ; proporciona métodos para compartir datos a través de los procesos que crea, y hace que la tarea de administrar múltiples procesos para ejecutar el código de Python (mucho) más fácil. En otras palabras, el multiprocessing permite aprovechar múltiples procesos para realizar sus tareas más rápido al ejecutar el código en paralelo.

Mi trabajo debe usar técnicas paralelas, y soy un nuevo usuario de Python. Así que me pregunto si podría compartir algún material sobre los módulos de multiprocessing y subprocess python. ¿Cuál es la diferencia entre estos dos?


El subproceso genera nuevos procesos, pero aparte de stdin / stdout y cualquier otra API que el otro programa pueda implementar, no tiene medios para comunicarse con ellos. Su objetivo principal es lanzar procesos que están completamente separados de su propio programa.

El multiprocesamiento también genera nuevos procesos, pero ejecutan su código y están diseñados para comunicarse entre sí. Lo usa para dividir tareas dentro de su propio programa en múltiples núcleos de CPU.


Si desea llamar a un programa externo (especialmente uno que no está escrito en Python) use subprocess .

Si desea llamar a una función Python en un subproceso, use multiprocessing .

(Si el programa está escrito en Python, pero también es importable, entonces trataría de llamar a sus funciones mediante multiprocessing , en lugar de llamarlo externamente a través de un subprocess ).