Aprendizaje básico de Python-programación concurrente

1. Conocimientos previos

Como su nombre lo indica, un proceso es un proceso que se ejecuta. Un proceso es una abstracción de un programa en ejecución.

El concepto de proceso se origina en el sistema operativo, es el concepto central del sistema operativo y también es uno de los conceptos abstractos más antiguos e importantes proporcionados por el sistema operativo. Todo lo demás en el sistema operativo gira en torno al concepto de un proceso. Entonces, si realmente desea comprender el proceso, debe comprender el sistema operativo de antemano

Historial de desarrollo del sistema operativo: solo consulte el blog: https://www.cnblogs.com/Dominic-Ji/articles/10929381.html

La base teórica necesaria:

 

# 1 La función del sistema operativo: 
    1 : ocultar la interfaz de hardware fea y compleja, proporcionar una buena interfaz abstracta
     2 : administrar y programar procesos y hacer que la competencia de múltiples procesos para el hardware sea ordenada 

# 二 多 道 技术: 
    1. Generar Antecedentes: para un solo núcleo, para lograr 
    ps concurrente : el 
    host actual generalmente es multi-núcleo, luego cada núcleo usará tecnología multicanal 
    con 4 cpu, un programa que se ejecuta en cpu1 encuentra bloqueo io y esperará hasta que termine io antes de reprogramar , Se programará en 
    cualquiera de las cuatro CPU, determinadas específicamente por el algoritmo de programación del sistema operativo. 
    
    2. Multiplexación espacial: si hay varios programas en la memoria al mismo tiempo
     3. Multiplexación en el tiempo: la multiplexación de la porción de tiempo de una CPU 
       enfatiza: cuando se encuentra io cut, toma demasiado tiempo ocupar el tiempo de la CPU, el núcleo está antes de cortar Guarde el estado del proceso, 
            para asegurarse de que la próxima vez que vuelva a cambiar, pueda continuar ejecutándose en función de la posición del último corte

Segundo, tecnología multicanal

1. Implementación de un solo núcleo de efectos concurrentes

  • Concurrencia

    Parece que se está ejecutando al mismo tiempo y se puede llamar concurrente

  • Paralelo

    Ejecución simultánea en el verdadero sentido

Resumen:

  • Paralelo debe ser concurrente

  • Las computadoras de un solo núcleo no pueden lograr paralelismo, pero pueden lograr concurrencia

Suplemento: asumimos directamente que un solo núcleo es un núcleo, y solo una persona trabaja, no tenga en cuenta la cantidad de núcleos en la CPU

2. Ilustración técnica multicanal

3. Enfoque tecnológico multicanal

  • Multiplexación espacial
    • Múltiples programas comparten un conjunto de hardware de computadora
  • Multiplexación en el tiempo
    • Solo necesita hacer el largo, puede ahorrar el tiempo de cambio

    • Cambiar entre guardar estado, modo de usuario y modo kernel Cambiar + guardar estado

 

La conmutación (CPU) se divide en dos casos 1. Cuando un programa encuentra una operación IO, el sistema operativo privará al programa de la función de autoridad de ejecución de la CPU: mejora la utilización de la CPU y no afecta la eficiencia de ejecución del programa Cuando io se retrasa, el programa no tiene espacio para ejecutar la copa, por lo que la privación no afectará el funcionamiento del programa 2. Cuando un programa ocupa la CPU durante mucho tiempo, la atracción de la operación también privará al programa de la autoridad de ejecución de la CPU. Eficiencia de ejecución (tiempo original + tiempo de conmutación)

3. Teoría del proceso

1. Conocimiento requerido

'' ' 
La diferencia entre un programa y un proceso Un 

programa es un montón de código que se encuentra en el disco duro, un 
proceso que está' muerto 'es un proceso que se está ejecutando, es un' live 
'' '

 

2. Programación de procesos

  • Algoritmo de programación por orden de llegada
    • Es bueno para operaciones con tiempo de ejecución largo, pero no para operaciones cortas.
    • Debido a que un trabajo largo llega primero, el siguiente trabajo corto tiene que esperar a que se complete el trabajo largo antes de vaciar el espacio de la taza para el trabajo corto
  • Algoritmo de prioridad de trabajo corto
    • Priorizar trabajos cortos
    • Si se está ejecutando un trabajo largo y llega un trabajo corto, entonces el trabajo largo se suspenderá primero y luego el trabajo corto se devolverá al trabajo largo para continuar la ejecución
  • Método de rotación de intervalo de tiempo + cola de comentarios de varios niveles
    • No importa si los trabajos largos o cortos se colocan primero en una cola, ejecute uniformemente una unidad de tiempo específica
    • Si no se completa dentro del tiempo especificado, entrará en la segunda cola de prioridad y ejecutará una unidad de tiempo más larga
    • En este momento, un trabajo suspenderá directamente el segundo escalón para realizar el trabajo del primer escalón
    • Resumen: utilice el estado de conmutación y guardado, optimice la eficiencia de ejecución de trabajos de diferentes tamaños

3. Tres estados del proceso.

Antes de comprender otros conceptos, primero debemos comprender varios estados del proceso. En el proceso de ejecución del programa, debido al algoritmo de programación del sistema operativo, el programa ingresará en varios estados: listo, ejecutándose y bloqueándose.

  (1) Estado listo

   Cuando el proceso se ha asignado a todos los recursos necesarios, excepto la CPU, siempre que se obtenga el procesador, se puede ejecutar de inmediato. El estado del proceso en este momento se denomina estado listo.

  (2) Ejecutar / Ejecutar

Estado Cuando el proceso ha adquirido el procesador, su programa se ejecuta en el procesador y el estado del proceso en este momento se denomina estado de ejecución.

  (3) Estado bloqueado (bloqueado)

El proceso que se está ejecutando no se puede ejecutar debido a la espera de que ocurra un evento, abandonará el procesador y estará en estado bloqueado. Puede haber múltiples eventos que causen el bloqueo del proceso, por ejemplo, esperando que se complete la E / S, no se puede satisfacer el búfer de la aplicación, esperando letras (señales), etc.

4. Dos pares de conceptos importantes.

Describe cómo se envían las tareas.

  • Sincronización
    • Explicación: Después de enviar la tarea, espera el resultado de la tarea en su lugar y no hace nada durante el proceso de espera. Parece que el programa está atascado.
  • Asincrónico
    • Explicación: Después de enviar la tarea, no espere el resultado de la tarea y haga otras cosas directamente
    • El resultado devuelto de la tarea será procesado automáticamente por un mecanismo de devolución de llamada asíncrono.

Es como entregarle una tarea al maestro para que la corrija, Xiaohong se la entregó al maestro, de pie en el mismo lugar y esperando que el maestro termine la corrección. Y Xiao Li se escapó después de dárselo al maestro. Este comportamiento se llama asíncrono.

Describe el estado de ejecución del programa.

  • Bloqueo (estado de bloqueo)
    • Es el estado que nuestro programa básicamente encontrará cuando se ejecute, esperando la operación io
  • Sin bloqueo (estado preparado, estado de ejecución)
    • Es el estado ideal para que nuestro programa se ejecute, solo cambia entre el estado listo y el estado de ejecución, lo que reduce el retraso io

Cuatro, dos formas de iniciar el proceso.

# 方式一
de multiprocesamiento importación Proceso de
 importación tiempo 


def tarea (nombre):
     de impresión (f ' {nombre} está ejecutando ' ) 
    time.sleep ( 3 )
     de impresión (f ' {nombre} ha terminado ' ) 


si  __name__ == ' __main__ ' : 
    p = Proceso (target = task, args = ( ' hz ' ,)) 
    p.start () 
    print ( ' ^ (*  ̄ (oo)  ̄) ^ ' ) 
    
#方式 二 类 的 继承

de la importación multiprocesamiento Proceso de
 importación clase de tiempo 

MyProcess (Proceso):
     def run (self):
         print ( ' hell 1 ' ) 
        time.sleep ( 3 )
         print ( ' hello 2 ' ) if __name__ == ' __main__ ' : 
    p = MyProcess () 
    p.start () print ( ' ^ (*  ̄ (oo)  ̄) ^ ' )

 
    

Resumen

"" " 
Crear un proceso es solicitar un espacio de memoria en la memoria y arrojar el código que debe ejecutarse. 
Un proceso corresponde a un espacio de memoria separado 
en la memoria. Varios procesos corresponden a un bloque separado de espacio de memoria en el 
proceso. Proceso y proceso De manera predeterminada, no se puede interactuar directamente entre datos. Si desea interactuar, puede usar herramientas y módulos de terceros 
"" "

método de unión

Unirse es dejar que el proceso principal espere a que el código del subproceso termine de ejecutarse antes de continuar. No afecta la ejecución de otros procesos secundarios

Uso específico: después de que comienza el proceso, el objeto de proceso .join ()

Aislamiento de datos entre procesos.

de multiprocesamiento importación Proceso de
 importación tiempo 

una = 100
 def tarea (nombre):
     de impresión (f ' {nombre} está ejecutando ' ) 
    time.sleep ( 3 )
     mundial una 
    una = 101
     impresión (a)
     de impresión (f ' {nombre} ha terminado ' ) 


if  __name__ == ' __main__ ' : 
    p = Process (target = task, args = ( ' hz ' ,)) 
    p.start ()
    print (a) 
    p.join () 
    print ( ' ^ (*  ̄ (oo)  ̄) ^ ' )

Supongo que te gusta

Origin www.cnblogs.com/dingbei/p/12755339.html
Recomendado
Clasificación