Código fuente: Lib / sched.py

los sched El módulo define una clase que implementa un programador de eventos de propósito general:

class sched.scheduler(timefunc=time.monotonic, delayfunc=time.sleep)

los scheduler La clase define una interfaz genérica para programar eventos. Necesita dos funciones para lidiar realmente con el “mundo exterior”: timefunc debe ser invocable sin argumentos y devolver un número (el “tiempo”, en cualquier unidad). los delayfunc La función debe ser invocable con un argumento, compatible con la salida de timefunc, y debería retrasar esa cantidad de unidades de tiempo. delayfunc también se llamará con el argumento 0 después de que se ejecute cada evento para permitir que otros subprocesos tengan la oportunidad de ejecutarse en aplicaciones de subprocesos múltiples.

Modificado en la versión 3.3: timefunc y delayfunc los parámetros son opcionales.

Modificado en la versión 3.3: scheduler class se puede utilizar de forma segura en entornos de subprocesos múltiples.

Ejemplo:

>>> import sched, time
>>> s = sched.scheduler(time.time, time.sleep)
>>> def print_time(a='default'):
...     print("From print_time", time.time(), a)
...
>>> def print_some_times():
...     print(time.time())
...     s.enter(10, 1, print_time)
...     s.enter(5, 2, print_time, argument=('positional',))
...     s.enter(5, 1, print_time, kwargs={'a': 'keyword'})
...     s.run()
...     print(time.time())
...
>>> print_some_times()
930343690.257
From print_time 930343695.274 positional
From print_time 930343695.275 keyword
From print_time 930343700.273 default
930343700.276

Objetos del programador

scheduler las instancias tienen los siguientes métodos y atributos:

scheduler.enterabs(time, priority, action, argument=(), kwargs={})

Programe un nuevo evento. los tiempo El argumento debe ser un tipo numérico compatible con el valor de retorno del timefunc función pasada al constructor. Eventos programados para el mismo tiempo se ejecutarán en el orden de su prioridad. Un número más bajo representa una prioridad más alta.

Ejecutar el evento significa ejecutar action(*argument, **kwargs). argumento es una secuencia que contiene los argumentos posicionales para acción. kwargs es un diccionario que contiene los argumentos de palabras clave para acción.

El valor devuelto es un evento que puede usarse para una cancelación posterior del evento (ver cancel()).

Modificado en la versión 3.3: argumento el parámetro es opcional.

Modificado en la versión 3.3: kwargs se agregó el parámetro.

scheduler.enter(delay, priority, action, argument=(), kwargs={})

Programe un evento para demora más unidades de tiempo. Aparte del tiempo relativo, los otros argumentos, el efecto y el valor de retorno son los mismos que los de enterabs().

Modificado en la versión 3.3: argumento el parámetro es opcional.

Modificado en la versión 3.3: kwargs se agregó el parámetro.

scheduler.cancel(event)

Elimina el evento de la cola. Si evento no es un evento actualmente en la cola, este método generará un ValueError.

scheduler.empty()

Regreso True si la cola de eventos está vacía.

scheduler.run(blocking=True)

Ejecute todos los eventos programados. Este método esperará (usando el delayfunc() (función pasada al constructor) para el siguiente evento, luego ejecútelo y así sucesivamente hasta que no haya más eventos programados.

Si bloqueo es falso ejecuta los eventos programados que deben vencer antes (si corresponde) y luego devuelve la fecha límite de la próxima llamada programada en el programador (si corresponde).

Cualquiera acción o delayfunc puede plantear una excepción. En cualquier caso, el programador mantendrá un estado coherente y propagará la excepción. Si una excepción es provocada por acción, el evento no se intentará en futuras llamadas a run().

Si una secuencia de eventos tarda más en ejecutarse que el tiempo disponible antes del próximo evento, el planificador simplemente se retrasará. No se descartarán eventos; el código de llamada es responsable de cancelar los eventos que ya no son pertinentes.

Modificado en la versión 3.3: bloqueo se agregó el parámetro.

scheduler.queue

Atributo de solo lectura que muestra una lista de los próximos eventos en el orden en que se ejecutarán. Cada evento se muestra como un tupla nombrada con los siguientes campos: tiempo, prioridad, acción, argumento, kwargs.