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,