¿Cuál es la diferencia entre el programa de ejecución de subprocesos de Python y el programa de ejecución de funciones?

La diferencia fundamental es : los programas de subprocesos múltiples no están bloqueados, sino concurrentes.
El programa ordinario se lleva a cabo de acuerdo con el proceso tradicional, si encuentra while (verdadero) en el medio, entonces el programa siempre estará en este bucle sin fin y nunca se apagará. El programa multiproceso no lo hace, es concurrente. En la próxima porción de tiempo de la CPU, el programa multiproceso ejecutará lo suyo, independientemente del bucle infinito que tenga aquí.

Tome el código como ejemplo:
1. Utilice funciones ordinarias para ejecutar el programa.

import threading
import time


def tt1():
    while 1:
        print('hello')
        time.sleep(0.1)


def tt2():
    print('hello world')


if __name__ == '__main__':
    # t1 = threading.Thread(target=tt1).start()
    tt1()
    tt2()
    pass

Imprimir resultado:
Inserte la descripción de la imagen aquí
Ejecute el programa, el programa creará un proceso con un hilo principal, y el hilo principal ejecutará la función tt1 (). Debido al uso de un bucle infinito, siempre estará bloqueado y el programa no podrá continuar. ejecutar hacia abajo.
2. Utilice subprocesos para ejecutar programas:

import threading
import time


def tt1():
    while 1:
        print('hello')
        time.sleep(0.1)


def tt2():
    print('hello world')


if __name__ == '__main__':
    t1 = threading.Thread(target=tt1).start()
    # tt1()
    tt2()
    pass

Resultado de la ejecución:
Inserte la descripción de la imagen aquí
se imprime 'hola mundo', lo que indica que el programa principal no está bloqueado, pero espera a que la CPU esté inactiva, vuelve al hilo principal y continúa ejecutando el programa. Imprimiendo 'hola mundo'
Descripción: La el programa creará un proceso, proceso Tiene un subproceso principal, el subproceso principal ejecutará el programa, después de la ejecución, el programa crea un subproceso t1, la CPU cambiará a la función tt1 () para su ejecución, hasta que la CPU vuelve al programa principal y ejecuta la función tt2 (), imprimiendo hola mundo ((el cambio de CPU se debe al bloqueo de Python GIL)

Resumen :
1. Generalmente, si desea utilizar múltiples funciones en un programa, es mejor iniciar el programa con un hilo
. Cada función usa un hilo . 2. El programa de inicio de la función no continuará ejecutándose cuando ocurre un bucle infinito. , provocando que el programa se bloquee., Y la ejecución del subproceso del programa no hará que el programa principal se bloquee, logrando así el efecto de concurrencia, y la ejecución se destruirá automáticamente al final de la ejecución, y no ocupará demasiado mucha memoria.

Supongo que te gusta

Origin blog.csdn.net/qq_43030934/article/details/106575546
Recomendado
Clasificación