Red de conocimiento informático - Problemas con los teléfonos móviles - Proceso en Python-parte práctica

Proceso en Python-parte práctica

Si desea comprender el proceso, primero puede leer la parte teórica del proceso de este artículo en Python.

Los subprocesos múltiples en Python no pueden aprovechar las ventajas de los múltiples núcleos. Si desea aprovechar al máximo los recursos de las CPU de múltiples núcleos (vistos con os.cpu_count()), en la mayoría de los casos en Python necesita utilizar múltiples procesos. Python proporciona multiprocesamiento.

El módulo de multiprocesamiento se utiliza para iniciar un proceso hijo y ejecutar nuestras tareas personalizadas (como funciones) en el proceso hijo. La interfaz de programación de este módulo es similar al subprocesamiento del módulo multiproceso.

El módulo de multiprocesamiento tiene muchas funciones: admite subprocesos, comunicación e intercambio de datos, realiza diferentes formas de sincronización y proporciona componentes como Proceso, Cola, Tubería y Bloqueo.

Un punto que debe enfatizarse nuevamente es: a diferencia de los subprocesos, los procesos no tienen ningún estado compartido y los datos modificados por el proceso solo se cambian dentro del proceso.

Clase para crear un proceso:

Introducción de parámetros:

El parámetro de grupo no se utiliza y el valor siempre es Ninguno

Destino representa el objeto que llama, es decir, las tareas que debe realizar el proceso hijo

args representa la tupla de parámetros posicionales del objeto que llama, args=(1, 2, 'tiga',)

kwargs representa el diccionario del objeto que llama, kwargs={'name': 'tiga', 'age': 18}

name es el nombre del proceso hijo

Introducción al método:

p.start (): inicia el proceso y llama a p.run() en el subproceso

p.run(): el método que es se ejecuta cuando comienza el proceso. Es el que llama a la función especificada por el objetivo. Este método debe implementarse en la clase que define la clase.

p.terminate(): Terminar forzosamente el proceso p sin ningún tipo de proceso. Operación de limpieza. Si p crea un proceso hijo, el proceso hijo se convierte en un proceso zombie. En este caso, debe tener especial cuidado al utilizar este método. Si p todavía mantiene un bloqueo, no se liberará, lo que provocará un punto muerto

p.is_alive(): si p todavía se está ejecutando, devuelve True

p.join( [timeout ]): El hilo principal espera a que p termine (énfasis: el hilo principal está en estado de espera y p está en estado de ejecución). el tiempo de espera es un tiempo de espera opcional. Cabe enfatizar que p.join solo puede unirse al proceso iniciado por inicio, pero no puede unirse al proceso iniciado por ejecución

Introducción del atributo:

Nota: En Windows, Process() debe colocarse bajo # if __name__ == '__main__':

Dos formas de crear e iniciar un proceso hijo

Método uno:

Método 2:

Con join, ¿no se serializa el programa?

terminar y is_alive

nombre y pid