python中有一个轻量级的定时任务调度的库:schedule。他可以完成每分钟,每小时,每天,周几,特定日期的定时任务。因此十分方便我们执行一些轻量级的定时任务。
import schedule
import time
def task():
#do task
schedule.every(30).minutes.do(task) # 每隔半小时执行一次任务
schedule.every().hour.do(task) # 每隔一小时执行一次任务
schedule.every().day.at("10:30").do(task) # 每天的10:30执行一次任务
schedule.every().monday.do(task) # 每周一的这个时候执行一次任务
schedule.every().wednesday.at("13:15").do(task) # 每周三13:15执行一次任务
while True:
schedule.run_pending() # run_pending:运行所有可以运行的任务
time.sleep(1)
下面我们运行一个简单的例子来看看实际效果
import schedule
import time
def task():
loveTime = time.strftime("%Y-%m-%d-%H:%M:%S", time.localtime())
print(f"I love you, the time is {loveTime}")
schedule.every(0.1).minutes.do(task) # 每隔0.1分钟(即6秒钟)执行一次我爱你任务
while True:
schedule.run_pending() # run_pending:运行所有可以运行的任务
time.sleep(1) #等待是有必要的,不然程序一直占用着CPU,会导致CPU运行在高位
运行结果:
I love you, the time is 2021-06-09-16:25:10
I love you, the time is 2021-06-09-16:25:16
I love you, the time is 2021-06-09-16:25:22
I love you, the time is 2021-06-09-16:25:28
I love you, the time is 2021-06-09-16:25:34
可以看到每间隔6s执行一次我爱你的任务
在工程项目中,也可以起一个线程,将该任务放到线程中去执行
import schedule
import time
import threading
def task():
loveTime = time.strftime("%Y-%m-%d-%H:%M:%S", time.localtime())
print(f"I love you, the time is {loveTime}")
schedule.every(0.1).minutes.do(task) # 每隔0.1分钟(即6秒钟)执行一次我爱你的任务
def scheduleTask():
while True:
schedule.run_pending()
time.sleep(1)
def createThreadRunTask():
dataThread1 = threading.Thread(target=scheduleTask)
dataThread1.start()
createThreadRunTask()
同样也可以达到上述的效果
介绍完如何建立定时任务后,接下来学习如何在windows平台上杀掉后台进程,我们用到的是windows平台下的taskkill 命令
TASKKILL [/S system [/U username [/P [password]]]]
{ [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]
参数列表
1. /S system 指定要连接的远程系统。
2. /U [domain\]user 指定应该在哪个用户上下文执行这个命令。
3. /P [password] 为提供的用户上下文指定密码。如果忽略,提示输入。
4. /FI filter 应用筛选器以选择一组任务。允许使用 "*"。例如,映像名称 eq acme*
5. /PID processid 指定要终止的进程的 PID。使用 TaskList 取得 PID。
6. /IM imagename 指定要终止的进程的映像名称。通配符 '*'可用来 指定所有任务或映像名称。
7. /T 终止指定的进程和由它启用的子进程。
8. /F 指定强制终止进程。
9. /? 显示帮助消息。
假如我们要杀掉chrome进程
taskkill /F /IM chrome.exe
最后组合起来,我们要每间隔半小时杀掉一次chrome进程,代码如下
import schedule
import time
import threading
import os
def task():
os.system("TASKKILL /F /IM chrome.exe")
schedule.every(30).minutes.do(task) # 每隔半小时执行一次任务
def scheduleTask():
while True:
schedule.run_pending()
time.sleep(1)
def createThreadRunTask():
dataThread1 = threading.Thread(target=scheduleTask)
dataThread1.start()
createThreadRunTask()