La diferencia entre multiproceso y subprocesos múltiples en Python
Un proceso es una instancia de ejecución de un programa (software, aplicación). Cada programa en ejecución puede crear múltiples procesos al mismo tiempo, pero debe haber al menos uno. Cada proceso proporciona todos los recursos necesarios para ejecutar el programa. Tiene un espacio de direcciones virtuales, código ejecutable, interfaz del sistema operativo, contexto de seguridad (que registra el usuario y los permisos que iniciaron el proceso, etc.) y una identificación de proceso única. variables de entorno, clases de prioridad, espacio de trabajo mínimo y máximo (espacio de memoria). Los procesos pueden contener subprocesos y cada proceso debe tener al menos un subproceso. Cuando se inicia cada proceso, primero generará un hilo, el hilo principal, y luego el hilo principal creará otros hilos secundarios.
Un subproceso, a veces llamado proceso ligero (LWP), es la unidad más pequeña de flujo de ejecución de un programa. Un hilo estándar consta de un ID de hilo, un puntero de instrucción actual (PC), un conjunto de registros y una pila. Además, un subproceso es una entidad en el proceso y es la unidad básica que el sistema programa y distribuye de forma independiente. El subproceso en sí no posee de forma independiente los recursos del sistema, pero puede compartir todos los recursos que posee el proceso con otros subprocesos. pertenecientes al mismo proceso. Cada aplicación tiene al menos un proceso y un hilo. Ejecutar varios subprocesos simultáneamente en un solo programa para completar diferentes tareas que se dividen en partes se denomina subprocesos múltiples.
Por ejemplo, una empresa quiere producir un producto, por lo que construye muchas fábricas en su base de producción, y cada fábrica tiene múltiples líneas de producción. Todas las fábricas cooperan para producir el producto completo. La línea de montaje de una sola fábrica es responsable de producir los componentes del producto de la fábrica a la que pertenece. Cada fábrica tiene su propia biblioteca de materiales, y las líneas de producción de la fábrica comparten estos materiales. Para lograr la producción, una empresa debe tener al menos una fábrica y una línea de producción. Cambiando al concepto de computadora, entonces la empresa es la aplicación, la fábrica es el proceso de la aplicación y la línea de producción es el hilo de un determinado proceso.
Características de los subprocesos:
Un subproceso es un contexto de ejecución, que es una serie de instrucciones necesarias para que una CPU las ejecute. Digamos que estás leyendo un libro, no lo has terminado y quieres tomar un descanso, pero quieres continuar donde estabas cuando regresaste. Una forma es escribir los tres valores de número de páginas, número de líneas y número de palabras. Estos valores son el contexto de ejecución. Si tu compañero de cuarto está leyendo este libro mientras tú tomas un descanso, utiliza el mismo método. Tú y ella sólo necesitan escribir estos tres números y podrán leer el libro juntos en momentos alternos.
Los hilos funcionan de manera similar. La CPU le dará la ilusión de que puede realizar múltiples operaciones al mismo tiempo. De hecho, solo dedica una cantidad muy pequeña de tiempo a cada operación. En esencia, la CPU solo puede hacer una cosa al mismo tiempo. -Llamado procesamiento concurrente y de subprocesos múltiples. Solo una ilusión. La CPU puede hacer esto porque tiene un contexto de ejecución para cada tarea, del mismo modo que puedes compartir el mismo libro con tus amigos.
La diferencia entre procesos y subprocesos:
Los subprocesos en un mismo proceso comparten el mismo espacio de memoria, pero los espacios de memoria entre procesos son independientes.
Los datos de todos los hilos del mismo proceso se comparten, pero los datos entre procesos son independientes.
Las modificaciones al hilo principal pueden afectar el comportamiento de otros hilos, pero las modificaciones al proceso padre (aparte de la eliminación) no afectarán a otros procesos secundarios.
Un hilo es una instrucción de ejecución contextual, mientras que un proceso es un conjunto de recursos relacionados con operaciones.
Los hilos de un mismo proceso pueden comunicarse directamente, pero la comunicación entre procesos requiere la ayuda de un agente intermedio.
Crear un nuevo hilo es fácil, pero crear un nuevo proceso requiere una copia del proceso principal.
Un hilo puede operar otros hilos del mismo proceso, pero un proceso sólo puede operar sus procesos hijos.
La velocidad de inicio del subproceso es rápida y la velocidad de inicio del proceso es lenta (pero la velocidad de ejecución de los dos no es comparable).
A medida que las CPU modernas han entrado en la era de los múltiples núcleos y la frecuencia principal ha mejorado enormemente en comparación con el pasado, la programación multiproceso y multiproceso se ha convertido en algo común. Python es totalmente compatible con la programación multiproceso y multiproceso, y también admite corrutinas.