Red de conocimiento informático - Conocimiento del nombre de dominio - Código fuente del libro de programación concurrente

Código fuente del libro de programación concurrente

Índice de contenidos

Como todos sabemos, la CPU es el núcleo de la computadora y es responsable de todas las tareas informáticas. El sistema operativo es el administrador de la computadora y el ama de llaves. Es responsable de programar tareas, asignar y administrar recursos y comandar todo el hardware de la computadora. Una aplicación es un programa con determinadas funciones que se ejecuta en un sistema operativo.

En los primeros días, las computadoras no tenían el concepto de subprocesos, pero con el desarrollo de los tiempos, existen muchas deficiencias al usar solo procesos para manejar programas. Por ejemplo, cuando se bloquea un proceso, todo el programa se detendrá en el lugar bloqueado. Si los procesos se cambian con frecuencia, se desperdiciarán recursos del sistema. Entonces apareció el hilo.

Un hilo es la unidad más pequeña que puede poseer recursos y ejecutarse de forma independiente. 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 recursos.

Los libros electrónicos (y libros clásicos) de Python deben ser más de 200.

② 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 capacitación y códigos fuente interesantes y confiables)

④Videos sobre los conceptos básicos de Python, rastreadores, desarrollo web y análisis de big data (adecuado para principiantes)

⑤ Hoja de ruta de aprendizaje de Python (di adiós a los estudiantes deficientes)

Puedes confiar en 01, yo personalmente tener acceso a una gran cantidad de recursos de aprendizaje de Python.

Un proceso es un proceso de ejecución dinámica de un programa con determinadas funciones sobre un conjunto de datos. Un proceso consta de programas, conjuntos de datos y bloques de control de procesos. Los programas se utilizan para describir las funciones que debe completar un proceso y son un conjunto de instrucciones que controlan la ejecución de un proceso. El conjunto de datos son los datos y el espacio de trabajo necesarios para la ejecución del programa; el bloque de control del programa (PCB) contiene la información de descripción y la información de control del programa y es el único signo de la existencia del proceso.

En Python, el hilo es compatible con dos bibliotecas estándar, Thread y Threading, que encapsulan el hilo. En el módulo de subprocesos se proporcionan subprocesos, bloqueos, rlocks, condiciones y otros componentes.

En Python, los subprocesos y procesos se utilizan a través de la clase thread. Esta clase está en nuestro módulo Hilos y Subprocesos. Generalmente importamos a través de hilos.

De forma predeterminada, los hilos están disponibles siempre que no haya errores en el intérprete.

Modo Guardián:

Ahora, en el código de nuestro programa, hay varios subprocesos y todos operan en la misma parte del contenido, entonces, ¿cómo lograr * * * disfrute de estos? ¿datos? ?

En este momento, puede utilizar el bloqueo de objeto Lock en la biblioteca de subprocesos para protegerlo.

El método para obtener un objeto de bloqueo es solicitar un bloqueo.

Cada hilo debe solicitar permiso de operación antes de usar * * * * para operar el objeto de datos, es decir, llamar al método de adquisición del objeto de bloqueo correspondiente al * * * * objeto de datos de operación. Si el subproceso A ejecuta el método adquirir() y otro subproceso B ha solicitado el bloqueo pero aún no lo ha liberado, entonces el código del subproceso A esperará aquí a que el subproceso B libere el bloqueo y no ejecutará el siguiente código.

Antes de que el hilo B libere el bloqueo ejecutando el método de liberación del bloqueo, el hilo A puede adquirir el bloqueo y ejecutar el siguiente código.

Por ejemplo:

Cuando se utilizan subprocesos múltiples, si los datos no cumplen con sus expectativas, puede considerar si la llamada sobrescribe los datos que se están disfrutando.

Utilice el bloqueo de objeto de bloqueo en la biblioteca de subprocesos para protegerlo.

El multiprocesamiento en Python se implementa a través del paquete de multiprocesamiento. De manera similar a threading.Thread, se puede utilizar el multiprocesamiento. Objeto de procedimiento para crear un objeto de procedimiento. Los métodos de este objeto Proceso son casi los mismos que los del objeto Hilo, como start(), run(), join(), etc. Un método es diferente del método demonio en el objeto de hilo. Completa la tutela del objeto de proceso estableciendo el atributo demonio.

Modo guardián:

Su uso es similar al bloqueo de subprocesos.

El papel del gestor es proporcionar variables globales compartidas por múltiples procesos. El método Manager() devuelve un objeto que controla un proceso de servicio. El objeto guardado en este proceso ejecuta otros procesos para realizar operaciones de proxy.

Sintaxis:

La clase base del grupo de subprocesos es el ejecutor en el módulo concurrent.futures. El ejecutor proporciona dos subclases, ThreadPoolExecutor y ProcessPoolExecutor. Entre ellos, ThreadPoolExecutor se usa para crear un grupo de subprocesos y ProcessPoolExecutor se usa para crear un grupo de procesos.

Si se utiliza un grupo de subprocesos/grupo de procesos para administrar la programación concurrente, siempre que la función de tarea correspondiente se envíe al grupo de subprocesos/grupo de procesos, el resto será manejado por el grupo de subprocesos/proceso piscina.

Exectuor proporciona 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 de subproceso. Debido a 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 "completada en el futuro", por lo que Python se expresa en el futuro.

En el futuro se proporcionarán los siguientes métodos:

Los pasos para utilizar el grupo de subprocesos para realizar tareas de subprocesos son los siguientes:

El número óptimo de subprocesos = ((tiempo de espera del subproceso + tiempo de CPU del subproceso)/tiempo de CPU del subproceso)*número de CPU.

También puede ser inferior al número de núcleos de CPU.

Los pasos para utilizar el grupo de subprocesos para realizar tareas de subprocesos son los siguientes:

El código de inicio del proceso debe colocarse bajo if _ _ name _ =' _ _ main _ _ ': código, no ponerlo en una función o en otro lugar.

Habilidades para iniciar procesos

El número de procesos abiertos debe ser preferentemente inferior al número máximo de núcleos de CPU.