Red de conocimiento informático - Material del sitio web - Cómo implementar programación concurrente usando Python

Cómo implementar programación concurrente usando Python

El subproceso múltiple es la herramienta en la que casi todos los programadores pensarán primero al usar cada lenguaje (evítelo para los programadores de JS. El uso de subprocesos múltiples puede utilizar de manera efectiva los recursos de la CPU (excepción de Python). Sin embargo, la complejidad de los programas que genera el subproceso múltiple es inevitable, especialmente el problema de sincronización de recursos en competencia.

Sin embargo, debido al uso de Global Interpretation Lock (GIL) en Python, el código no puede ejecutarse simultáneamente en varios núcleos al mismo tiempo. En otras palabras, los subprocesos múltiples de Python no pueden ser concurrentes. Descubrirá que después de usar subprocesos múltiples para mejorar su código Python, la eficiencia de ejecución del programa ha disminuido. Si quieres conocer más detalles, te recomiendo leer este artículo. De hecho, es muy difícil utilizar un modelo de programación de subprocesos múltiples y los programadores pueden cometer errores fácilmente. Esto no es culpa del programador, porque el pensamiento paralelo es antihumano y la mayoría de nosotros pensamos en serie (no se habla de esquizofrenia). , y la arquitectura informática diseñada por von Neumann también se basa en la ejecución secuencial. Entonces, si no siempre puedes realizar tu programa multiproceso, felicitaciones, eres un programador con pensamiento normal :)

Python proporciona dos conjuntos de interfaces de subprocesos, uno es el módulo de subprocesos, que proporciona funciones básicas. , Interfaz de bajo nivel, que utiliza Function como cuerpo de ejecución del hilo. Otro grupo es el módulo de subprocesos, que proporciona una interfaz basada en objetos más fácil de usar (similar a Java. Puede heredar el objeto Thread para implementar subprocesos y también proporciona otros objetos relacionados con subprocesos, como Timer y Lock <). /p>

Ejemplo de uso del módulo de subprocesos

importar subprocesos

def trabajador():

"""función de trabajo de subprocesos"""

imprimir 'Trabajador'

thread.start_new_thread(worker)

Ejemplo de uso del módulo de subprocesos

importar subprocesos

def trabajador():

"""función de trabajador del subproceso"""

print 'Trabajador'

t = threading.Thread(target=trabajador)

t.start()

O estilo Java

importar subprocesos

clase de trabajador(threading.Thread):

def __init__( self):

pasar

def run():

"""función de trabajo del subproceso"""

imprimir 'Trabajador'

t = trabajador()

t.start()