Red de conocimiento informático - Problemas con los teléfonos móviles - Python usa funciones para implementar la sincronización de anotaciones

Python usa funciones para implementar la sincronización de anotaciones

En Python, no existe una palabra clave sincronizada como la que se usa en Java para sincronizar métodos, por lo que en Python generalmente usamos subprocesos. Método Lock() para implementar la sincronización. El bloqueo se adquiere al ingresar a la función y se libera al salir de la función, por lo que el código se ve muy feo. Además, algunas personas en Internet han proporcionado varios otros métodos de implementación, pero no se ven bien.

Cuando estaba trabajando en un proyecto hoy, de repente pensé si podría marcar un método como método sincronizado mediante la anotación de functools.

En primer lugar, debe tener un objeto de bloqueo en su propia clase e inicializar este objeto de bloqueo cuando se inicializa la clase, por ejemplo:

1

234

Cinco

Clase

MiTrabajador(objeto):

Excelente

__init__(self) :

Yo mismo

. Bloquear

Enhebrado. lock()

...

...

Luego cree una función sincronizada que decore un método específico de un objeto específico y coloque ese método en el medio. adquirir/liberar bloqueos para ejecutarse de la siguiente manera

123456

Excelente

Sincronización (función):

@functools

. wrapper(función)

excelente

wrapper(self

,

*

parámetros,