En este artículo, veremos cómo obtener la identificación del proceso de Python Multiprocess. Para esto, debemos usar el método multiprocessing.current_process() para obtener la identificación del multiproceso. El multiprocesamiento se refiere a la capacidad de un sistema para admitir más de un procesador al mismo tiempo. Las aplicaciones en un sistema de multiprocesamiento se dividen en rutinas más pequeñas que se ejecutan de forma independiente. El sistema operativo asigna estos hilos a los procesadores mejorando el rendimiento del sistema.
Considere un sistema informático con un solo procesador. Si se le asignan varios procesos al mismo tiempo, tendrá que interrumpir cada tarea y cambiar brevemente a otra para mantener todos los procesos en marcha.
Esta situación es como un chef que trabaja solo en una cocina. Tiene que hacer varias tareas como hornear, remover, amasar, etc.
Ejemplo 1:
Primero, necesitamos importar una biblioteca de multiprocesamiento en python.
Python3
# importing library import multiprocessing # define function def twos_multiple(y): # get current process print(multiprocessing.current_process()) return y * 2 pro = multiprocessing.Pool() print(pro.map(twos_multiple, range(10)))
Producción:
Ejemplo 2:
El multiprocesamiento mantendrá un objeto itertools.counter para todos y cada uno de los procesos, que se utiliza para generar una tupla _identity para cualquier proceso secundario que genere y el proceso de nivel superior produce un proceso secundario con ID de un solo valor, y genera un proceso con dos identificadores de valor, etc. Luego, si no se pasan nombres al constructor del Proceso, simplemente genera automáticamente el nombre basado en la _identidad, usando ‘:’.join(…). Luego, Pool altera el nombre del proceso usando replace, dejando igual la identificación generada automáticamente.
Los nombres generados automáticamente son únicos. Devolverá el objeto del proceso en sí mismo, existe la posibilidad de que el proceso sea su propia identidad.
El resultado de todo esto es que, aunque dos Procesos pueden tener el mismo nombre, porque puede asignarles el mismo nombre cuando los crea, son únicos si no toca el parámetro de nombre. Además, teóricamente podría usar _identity como un identificador único; ¡pero deduzco que hicieron esa variable privada por una razón!
Python3
import multiprocessing def twos_multiple(x): proc = multiprocessing.Process() curr_proc = multiprocessing.current_process() print('current process:', curr_proc.name, curr_proc._identity) print('created process:', proc.name, proc._identity) return x * 2 pro = multiprocessing.Pool() print(pro.map(twos_multiple, range(10)))
Producción: