Todos pueden entenderlo. Se recomienda recopilar los subprocesos y procesos en Python.
Contenidos
Como todos sabemos, la CPU es el núcleo del ordenador y realiza todas las tareas informáticas. El sistema operativo es el administrador de la computadora, un gran ama de llaves. Es responsable de la programación de tareas, la asignación y administración de recursos y del control de todo el hardware de la computadora. Una aplicación es un programa con una función determinada. El programa se ejecuta sobre el sistema operativo.
Al principio, las computadoras no tenían el concepto de subprocesos, sin embargo, con el desarrollo de los tiempos, solo. Los procesos se utilizan para manejar programas. Por ejemplo, cuando se bloquea un proceso, todo el programa se detendrá en el punto bloqueado y, si los procesos se cambian con frecuencia, se desperdiciarán recursos del sistema. Entonces aparecieron los subprocesos
Un subproceso es la unidad más pequeña que puede poseer recursos y ejecutarse de forma independiente, y también es la unidad más pequeña de ejecución de un programa. Un proceso puede tener varios subprocesos, y varios subprocesos que pertenecen al mismo proceso compartirán los recursos del proceso
① Más de 200 libros electrónicos (y libros clásicos) de Python deberían tener
② Información de la biblioteca estándar de Python (la versión china más completa)
③ Código fuente del proyecto (cuarenta o cincuenta proyectos de práctica y código fuente interesantes y confiables)
④ Videos de introducción básica a Python , rastreadores, desarrollo de redes y análisis de big data (adecuado para principiantes)
⑤ Hoja de ruta de aprendizaje de Python (di adiós al aprendizaje no calificado)
Envíame un mensaje privado 01, es decir, una gran cantidad de Hay recursos de aprendizaje de Python disponibles
Un proceso es un proceso de ejecución dinámica de un programa con una determinada función en un conjunto de datos. El proceso consta de tres partes: programa, recolección de datos y bloque de control del proceso. El programa se utiliza para describir las funciones que debe completar el proceso y es el conjunto de instrucciones que controla la ejecución del proceso. El conjunto de datos es el área de datos y trabajo requerida cuando se ejecuta el programa; contiene la información de descripción y la información de control del programa y es la única señal de
En Python, el soporte para subprocesos se proporciona a través de dos bibliotecas estándar, thread y Threading, y threading encapsula el subproceso. . El módulo de subprocesos proporciona subprocesos, bloqueos, RLOCK, condiciones y otros componentes.
El uso de subprocesos y procesos en Python se realiza a través de la clase Thread. Esta clase está en nuestros módulos de subprocesos y subprocesos. Generalmente importamos a través de subprocesos
De forma predeterminada, siempre que no haya ningún error en el intérprete, el hilo está disponible
Modo guardián:
Ahora nuestro programa Hay varios subprocesos en el código y la misma parte del contenido se operará en estos subprocesos. Entonces, ¿cómo implementar el intercambio de estos datos?
En este momento, puede usar el objeto de bloqueo Lock en la biblioteca de subprocesos para proteger
El método de adquisición del objeto Lock es solicitar el bloqueo
> Cada hilo está operando** *Antes de compartir un objeto de datos, debe solicitar adquirir el derecho de operación, es decir, llamar al método de adquisición del objeto de bloqueo correspondiente al *objeto de datos compartidos Si el hilo A ejecuta adquirir(). método, otro subproceso B ya ha solicitado este bloqueo y no se ha liberado, entonces el código del subproceso A espera a que el subproceso B libere el bloqueo aquí sin ejecutar el código posterior.
Hasta que el hilo B ejecute el método de liberación del bloqueo para liberar el bloqueo, el hilo A puede adquirir el bloqueo y ejecutar el siguiente código
Por ejemplo:
Al utilizar subprocesos múltiples, si los datos no coinciden con sus expectativas, puede considerar si las llamadas sobrescriben los datos compartidos
Utilice el objeto de bloqueo Bloquear en la biblioteca de subprocesos Desproteger
El multiprocesamiento en Python se implementa a través del paquete de multiprocesamiento, que es similar al subproceso multiproceso.Thread. Puede utilizar el objeto multiprocesamiento.Process para crear un objeto de proceso. Los métodos de este objeto de proceso son similares a los del objeto subproceso, incluidos start(), run(), join() y otros métodos. Uno de los métodos es diferente. El método del subproceso demonio en el objeto subproceso Thread es setDeamon. mientras que el proceso demonio del objeto Proceso es Esto se logra configurando el atributo demonio
Modo demonio:
Su uso es similar al del Bloqueo del hilo
La función del Manager es proporcionar multiproceso* **Variable global compartida, el método Manager() devolverá un objeto, que controla un proceso de servicio. El objeto guardado en el proceso ejecuta otros procesos para operar utilizando agentes
Sintaxis:
La clase base del grupo de subprocesos es Executor en el módulo concurrent.futures. Executor proporciona dos subclases, a saber, ThreadPoolExecutor y ProcessPoolExecutor, donde ThreadPoolExecutor se utiliza para crear un grupo de subprocesos. y ProcessPoolExecutor se usa para crear un grupo de procesos
Si usa un grupo de subprocesos/grupo de procesos para administrar la programación concurrente, entonces solo necesita enviar la función de tarea correspondiente al grupo de subprocesos/grupo de procesos, y el el grupo de subprocesos/grupo de procesos se hará cargo del resto
Proporcionado por Exectuor Se proporcionan los siguientes métodos comunes:
Después de que el programa envía la función de tarea al grupo de subprocesos, el método de envío devolverá un objeto Future. La clase Future se utiliza principalmente para obtener el valor de retorno de la función de tarea del subproceso. Dado que la tarea del subproceso se ejecutará de forma asincrónica en el nuevo subproceso, la función ejecutada por el subproceso es equivalente a una tarea "que se completará en el futuro", por lo que Python usa Future para representar
Future proporciona lo siguiente métodos:
p>Los pasos para utilizar el grupo de subprocesos para realizar tareas de subprocesos son los siguientes:
Número óptimo de subprocesos = ((tiempo de espera de subprocesos + tiempo de CPU de subprocesos) / subproceso tiempo de CPU) * número de CPU
También puede ser menor que el número de núcleos de CPU
Los pasos para usar el grupo de subprocesos para realizar tareas de subprocesos son los siguientes:
El código de inicio del proceso debe colocarse en if __name__ == '__main__ ': debajo del código, no se puede colocar en funciones ni en otros lugares
Consejos para iniciar procesos
El número de procesos iniciados debe ser inferior al número máximo de núcleos de CPU