Varios métodos comunes de tareas programadas del rastreador de Python

Prefacio

El texto y las imágenes de este artículo son de Internet y son únicamente con fines de aprendizaje y comunicación. No tienen ningún uso comercial. Si tiene alguna pregunta, comuníquese con nosotros para su procesamiento.

PD: Si necesita materiales de aprendizaje de Python, puede hacer clic en el enlace de abajo para obtenerlo usted mismo.

Materiales de aprendizaje gratuitos de Python y respuestas de comunicación grupal Haga clic para unirse


Recuerde que la sincronización de tareas de Windows anterior se puede usar normalmente. Lo probé hoy y descubrí que no se puede usar normalmente y la programación de tareas siempre se bloquea. A continuación, registre varias soluciones para las tareas de sincronización del rastreador de Python.

Método uno, mientras que es verdadero

Lo más fácil primero es que el ciclo while true se cuelga, no digas tonterías, solo ve al código:

import os
import time
import sys 
from datetime import datetime, timedelta
def One_Plan():
     # 设置启动周期
     Second_update_time = 24 * 60 * 60

    # 当前时间
    now_Time = datetime.now()
    # 设置 任务启动时间
    plan_Time = now_Time.replace(hour=9, minute=0, second=0, microsecond=0)  
    # 设置差值,-1 day, 21:48:53.246576,类似于这样
    # time.sleep()需要传入int,所以下面使用.total_seconds() 
    # 主要用来计算差值,返回int,具体功能可以自行查阅相关资料
    delta = plan_Time - now_Time
    first_plan_Time = delta.total_seconds() % Second_update_time
    print("距离第一次执行需要睡眠%d秒" % first_plan_Time)
    return first_plan_Time

# while Ture代码块,挂起程序,睡眠时间结束后调用函数名进行执行
while True:

    s1 = One_Plan()
    time.sleep(s1)
    # 下面这里是自己定义的函数,想跑代码的可以换成hellow world函数或者注释掉这行测试下
    exe_file(D_list)
    print("正在执行首次更新程序")

Personalmente, creo que usar este método para iniciar un plan cronometrado no es un problema si se trata de un solo programa y se ejecuta una vez al día. Si desea tener en cuenta la ejecución de varias tareas al día y necesita ejecutar varias veces al día. día, se resaltarán las deficiencias.

Hay muchos factores que deben tenerse en cuenta en la situación de trabajo. Por ejemplo, el programa de orugas debe ejecutarse cuatro veces a las 12 en punto de la tarde, a las 6 de la mañana, a las 9 de la mañana , y las 3 de la tarde, y es necesario ejecutar 4 rastreadores al mismo tiempo. También debe considerar si la red es estable, qué hacer si el programa se cuelga, etc.

Método dos, módulo temporizador

Hablé antes sobre el inicio de tiempo más simple, se puede decir que es el más simple y grosero, la vida es corta, Python es elegante, ¿hay algún tipo que sea muy simple y simple, y se pueda hacer en unas pocas líneas de código? ¡Debe tener! Para dar un breve ejemplo, al final del método anterior mencionado que se deben tener en cuenta otros factores, aquí viene:

Ahora necesitas iniciar un rastreador de selenio, usando el controlador Firefox + multi-threading. Todos entienden que el administrador de la computadora ahora muestra una tasa de uso de CPU del 20%. Después de iniciar selenium, sigue abriendo el navegador + multi-threading. Bien, dentro 5 minutos, la tasa de ocupación de la CPU se tira directamente al 90% +, la computadora está atascada sobre la marcha, aunque el programa de temporización todavía se está ejecutando, pero ya es similar al estado de espera, de repente siente que la computadora está atascada , la primera reacción: mierda, este lj Computer, no importa cómo el programa no se pueda ejecutar, todavía escribo mucho código, ¡*****! !

Sí, junto al código, consulte la información relevante para un estudio más detallado de funciones específicas:

from datetime import datetime
from threading import Timer
import time

# 定时任务
def task():
    print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

def timedTask():
    '''
    第一个参数: 延迟多长时间执行任务(秒)
    第二个参数: 要执行的函数
    第三个参数: 调用函数的参数(tuple)
    '''
    Timer(5, task, ()).start()

while True:
    timedTask()
    time.sleep(5)

7 líneas de código, ¿es muy elegante? Lo principal que es excelente y poco elegante es que hay menos código y no hay esfuerzo, ¿verdad?

2020-06-05 14:06:39
2020-06-05 14:06:44
2020-06-05 14:06:49
2020-06-05 14:06:54
2020-06-05 14:06:59
2020-06-05 14:07:04
2020-06-05 14:07:09
2020-06-05 14:07:14
2020-06-05 14:07:19
2020-06-05 14:07:24

Método tres, módulo programado

Esta vez directamente en el módulo programado

el código se muestra a continuación:

from datetime import datetime
import sched
import time


def timedTask():
    # 初始化 sched 模块的 scheduler 类,传入(time.time, time.sleep)这两个参数
    scheduler = sched.scheduler(time.time, time.sleep)
    # 增加调度任务,enter(睡眠时间,执行级别,执行函数)
    scheduler.enter(5, 1, task)
    # 运行任务
    scheduler.run()

# 定时任务
def task():
    print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

if __name__ == '__main__':
    timedTask()

Este módulo también es muy fácil de usar. Cabe señalar que el programador () solo se ejecutará una vez para finalizar el programa. Puede agregar while Ture bajo mian o agregar directamente tareas de programación en timeTask. Además de esta forma de escribir, hay otro tipo de escritura, el código:

import schedule
import time

def hellow():
    print('hellow')

def Timer():
    schedule.every().day.at("09:00").do(hellow)
    schedule.every().day.at("18:00").do(hellow)

    while True:
        schedule.run_pending()

        time.sleep('需要睡眠的周期')


Timer()

Aquí puede ver que hay día-hora-minuto, y la tarea de cronometraje es muy conveniente. Agregue el tiempo para dormir mientras es Verdadero, y agregue el número de veces que se ejecutará en el módulo de funciones.

Supongo que te gusta

Origin blog.csdn.net/pythonxuexi123/article/details/112838112
Recomendado
Clasificación