Programación concurrente de Python (dos): varias formas de crear múltiples hilos

1. Crea varios hilos con funciones

En Python3, Python proporciona un módulo incorporado threading.Threadque puede permitirnos crear múltiples hilos fácilmente.

threading.Thread() Generalmente acepta dos parámetros:

  • Nombre de la función del hilo: Nosotros definimos la función que ejecutará el hilo en segundo plano, y tenga cuidado de no agregarla ();
  • Parámetros de función de subproceso: los parámetros requeridos por el nombre de la función de subproceso se pasan en forma de una tupla. Si no se requiere ningún parámetro, se puede omitir.

por ejemplo

import time
from threading import Thread

# 自定义线程函数。
def target(name="Python"):
    for i in range(2):
        print("hello", name)
        time.sleep(1)

# 创建线程01,不指定参数
thread_01 = Thread(target=target)
# 启动线程01
thread_01.start()


# 创建线程02,指定参数,注意逗号
thread_02 = Thread(target=target, args=("MING",))
# 启动线程02
thread_02.start()

Puede ver la salida

hello Python
hello MING
hello Python
hello MING

2. Crea varios hilos con clases

En comparación con las funciones, usar clases para crear subprocesos es un poco más problemático.

Primero, tenemos que personalizar una clase, hay dos requisitos para esta clase.

  • Debe heredar threading.Threadla clase padre;
  • Debe runmétodo de replicación .

Aquí están los runmétodos, y por encima de nuestra 线程函数naturaleza es la misma, podemos escribir el programa de lógica empresarial. En start()llamará más tarde.

Veamos un ejemplo: para facilitar la comparación, runreutilizo la función anterior main.

import time
from threading import Thread

class MyThread(Thread):
    def __init__(self, type="Python"):
        # 注意:super().__init__() 必须写
        # 且最好写在第一行
        super().__init__()
        self.type=type

    def run(self):
        for i in range(2):
            print("hello", self.type)
            time.sleep(1)

if __name__ == '__main__':
    # 创建线程01,不指定参数
    thread_01 = MyThread()
    # 创建线程02,指定参数
    thread_02 = MyThread("MING")

    thread_01.start()
    thread_02.start()

Por supuesto, el resultado es el mismo.

hello Python
hello MING
hello Python
hello MING

3. Métodos de objeto de hilo

Los dos métodos principales para crear hilos en Python se describen arriba.

Es fácil crear un hilo, pero si quiere usarlo bien, necesita aprender varias funciones del objeto hilo.

Después de mi resumen, los métodos más utilizados son los siguientes:

# 如上所述,创建一个线程
t=Thread(target=func)

# 启动子线程
t.start()

# 阻塞子线程,待子线程结束后,再往下执行
t.join()

# 判断线程是否在执行状态,在执行返回True,否则返回False
t.is_alive()
t.isAlive()

# 设置线程是否随主线程退出而退出,默认为False
t.daemon = True
t.daemon = False

# 设置线程名
t.name = "My-Thread"

En este punto, probablemente hayamos terminado de introducir los conceptos básicos de los hilos de Python.

Supongo que te gusta

Origin blog.csdn.net/weixin_36338224/article/details/109209190
Recomendado
Clasificación