Anteriormente intenté usar el módulo de subprocesos en Python para crear varios subprocesos. Luego aprendí sobre GIL y cómo no permite aprovechar múltiples núcleos de CPU en una sola máquina. Así que ahora estoy tratando de hacer multiprocesamiento (no necesito estrictamente subprocesos separados).
Aquí hay un código de muestra que escribí para ver si se están creando procesos distintos. Pero como se puede ver en el resultado a continuación, obtengo el mismo ID de proceso cada vez. Entonces, no se están creando múltiples procesos. ¿Qué me estoy perdiendo?
import multiprocessing as mp
import os
def pri():
print(os.getpid())
if __name__=='__main__':
# Checking number of CPU cores
print(mp.cpu_count())
processes=[mp.Process(target=pri()) for x in range(1,4)]
for p in processes:
p.start()
for p in processes:
p.join()
Salida:
4
12554
12554
12554
La Process
clase requiere un invocable como objetivo.
En lugar de ejecutar la función en el proceso separado, la está llamando y pasando su resultado ( None
en este caso) a la Process
clase.
Simplemente cambie lo siguiente:
mp.Process(target=pri())
con:
mp.Process(target=pri)
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras