¿Se puede implementar el proceso de Python?
Procedimiento.multiprocesamiento
El multiproceso en Python no es realmente multiproceso. Si desea aprovechar al máximo los recursos de una CPU multinúcleo, en la mayoría de los casos. Necesita utilizar varios subprocesos en el proceso de Python. Python proporciona un paquete multiproceso muy fácil de usar. Solo necesita definir una función y Python hará todo lo demás. Con la ayuda de este paquete, la conversión de un proceso único a una ejecución simultánea se puede lograr fácilmente. El multiprocesamiento admite procesos secundarios, comunicación e intercambio de datos, realiza diferentes formas de sincronización y proporciona componentes como Proceso, Cola, Canalización y Bloqueo.
Volver al principio
1. Proceso
Cree la clase del proceso: Proceso([grupo [, destino [, nombre [, args [, kwargs] ]] ]]]), target representa el objeto que llama y args representa la tupla de parámetros posicionales del objeto que llama. kwargs representa un diccionario de llamadas a objetos. El nombre es un alias. El grupo en realidad no se utiliza.
Métodos: is_alive(), join([timeout]), run(), start(), terminate(). Entre ellos, Process inicia un proceso con start ().
Atributos: clave de autenticación, demonio (que se configurará mediante inicio()), código de salida (el proceso es Ninguno cuando se ejecuta, si es -N, significa que fue terminado por la señal N), nombre, pid . El demonio finaliza automáticamente después de que finaliza el proceso principal y no puede generar nuevos procesos por sí solo. Debe configurarse antes de iniciar ().
Ejemplo 1.1: Crear una función como un proceso único
importar multiprocesamientoimportar timedef trabajador(intervalo):
n = 5 while n gt; "La hora es {0}".format(time.ctime()))
time.sleep(interval)
n -= 1if __name__ == "__main__":
p = multiprocesamiento.Proceso(objetivo = trabajador, args = (3,))
p.start() print "p.pid:", p.pid print "p . name:", p.name print "p.is_alive:", p.is_alive()
Resultado 12345678p.pid:?8736p.name: Proceso-1p.is_alive: TrueLa hora es el martes 21 de abril 20:55:12?2015La hora es el martes 21 de abril?20:55:15?2015La hora es el martes 21 de abril?20:55:18?2015La hora es el martes 21 de abril?20:55:21? la hora es martes 21 de abril?20:55:24?2015
Ejemplo 1.2: Crear una función y convertirla en múltiples procesos
importar multiprocesamientoimportar timedef trabajador_1(intervalo): imprimir " trabajador_1"
tiempo.dormir(intervalo) imprimir "finalizar trabajador_1"def trabajador_2(intervalo): imprimir "trabajador_2"
tiempo.dormir(intervalo) imprimir "finalizar trabajador_2"def trabajador_3 (intervalo): imprimir "trabajador_3"
time.sleep(intervalo) imprimir "finalizar trabajador_3" if __name__ == "__main__":
p1 = multiprocesamiento.Proceso(objetivo = trabajador_1 , args = (2,))
p2 = multiprocesamiento.Proceso(destino = trabajador_2, args = (3,))
p3 = multiprocesamiento.Proceso(destino = trabajador_3, args = (4,))
p1.start()
p2.start()
p3.start() print("El número de CPU es : " str(multiprocessing.cpu_count())) para p en multiprocessing.active_children(): print("niño ? p.name:
" p.name "\tp.id" str(p.pid)) print "END!!!!!!!!!!!!!!!!!!!!!"
Resultado 1234567891011El el número de CPU es: 4child? p.name: Process-3p.id7992child? p.name: Process-2p.id4204child? p.name: Process-1p.id6380END!!!!!!!!!!! !!!!trabajador_1trabajador_3trabajador_2trabajador final_1trabajador final_2trabajador final_3