Windows通過開機自啟動執行bat腳本常駐python腳本
使用schedule實現python定時任務
python中的輕量級定時任務調度庫:schedule
-
安裝:
pip install schedule
- 使用:
- 單一任務:
import schedule
import time
# 定義要執行的任務
def job():
print("I'm working...")
# 選擇一種定時間隔
schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every(5).to(10).days.do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job)
while True:
schedule.run_pending()
time.sleep(1)
- 多任務
如果是多個任務運行的話,實際上它們是按照順序從上往下挨個執行的。如果上面的任務比較復雜,會影響到下面任務的運行時間。
解決方法:用多線程/多進程。開了一條線程,就把job獨立出去運行了,不會占主進程的cpu時間,schedule并沒有花掉執行一個任務的時間,它的開銷只是開啟一條線程的時間。
import datetime
import schedule
import threading
import time
def job1():
print("I'm working for job1")
time.sleep(2)
print("job1:", datetime.datetime.now())
def job2():
print("I'm working for job2")
time.sleep(2)
print("job2:", datetime.datetime.now())
def job1_task():
threading.Thread(target=job1).start()
def job2_task():
threading.Thread(target=job2).start()
def run():
schedule.every(10).seconds.do(job1_task)
schedule.every(10).seconds.do(job2_task)
while True:
schedule.run_pending()
time.sleep(1)
編寫bat執行python腳本
編寫bat腳本(xxx.bat)
Example:
if not "%1"=="wkdxz" mshta vbscript:createobject("wscript.shell").run("""%~f0"" wkdxz",vbhide)(window.close)&&exit
@echo off
D:\software\Anaconda3\envs\Delivery\python -i D:\test\test.py
- 第一行作用是使批處理后臺運行,即運行時不出現CMD窗口;
- 第二行作用是不顯示命令;
- 第三行是絕對路徑調用python.exe執行指定pyhon腳本
執行bat腳本
-
將bat腳本放置于啟動項路徑,開機自啟動:
Win10路徑Example:
C:\Users\lyuzi\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
- 雙擊運行,直接啟動。
停止執行python
粗暴地直接kill掉python.exe
cmd:
taskkill -f -t -im python.exe
tips:
建議在python腳本中寫log記錄運行情況。因為后臺執行bat就不知道怎么看它有沒有跑了。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
