Tarea de sincronización de Python: programada

schedSe puede usar para tareas cronometradas. Lo único que se debe tener en cuenta es que estas tareas se ejecutan en un hilo. Si las tareas anteriores tardan demasiado, las tareas posteriores se retrasarán.

Pero su método de uso sigue siendo muy simple, principalmente encapsula una clasescheduler

import sched
import time

def printName(name):
    print(name,"@",time.time())

s = sched.scheduler()
s.enter(5,1,printName,("5 - 1",))
s.enter(5,2,printName,("5 - 2",))
s.enter(10,1,printName,("10 - 1",))
s.run()

Entre ellos, enterse encuentra sel evento agregado, cuyos dos primeros parámetros representan el tiempo de retardo y la secuencia de ejecución de la tarea respectivamente; printNamees la función a ejecutar, ("5-1",)es la lista de parámetros, indicando la primera tarea a ejecutar en los 5s.

El resultado de su ejecución es el siguiente

5 - 1 @ 1649725436.606954
5 - 2 @ 1649725436.6229577
10 - 1 @ 1649725441.6388779

Si se agrega un retraso a la función, las tareas posteriores se retrasarán

def printName(name):
    print(name,"@",time.time())
    time.sleep(6)

Su salida es

5 - 1 @ 1649725617.7624931
5 - 2 @ 1649725623.7689147
10 - 1 @ 1649725629.7827168

A diferencia enterde cancel(evt)sum empty, el primero puede eliminar un evento y el segundo puede borrar todos los eventos.

Si se threadusan juntos, el schedproblema de bloqueo se puede resolver.

import sched
import threading
import time

def printNameByThread(name):
    threading.Thread(target=printName,args=[name]).start()

s = sched.scheduler()
s.enter(5,1,printNameByThread,("5 - 1",))
s.enter(5,2,printNameByThread,("5 - 2",))
s.enter(10,1,printNameByThread,("10 - 1",))

s.run()

Su salida es

5 - 1 @ 1649725777.2276525
5 - 2 @ 1649725777.2276525
10 - 1 @ 1649725782.2158542

Por lo tanto, con el uso experto threadde y sched, puede organizar tareas cronometradas.

Supongo que te gusta

Origin blog.csdn.net/m0_37816922/article/details/124115431
Recomendado
Clasificación