Windows通過(guò)開(kāi)機(jī)自啟動(dòng)執(zhí)行bat腳本常駐python腳本
使用schedule實(shí)現(xiàn)python定時(shí)任務(wù)
python中的輕量級(jí)定時(shí)任務(wù)調(diào)度庫(kù):schedule
-
安裝:
pip install schedule
- 使用:
- 單一任務(wù):
import schedule
import time
# 定義要執(zhí)行的任務(wù)
def job():
print("I'm working...")
# 選擇一種定時(shí)間隔
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)
- 多任務(wù)
如果是多個(gè)任務(wù)運(yùn)行的話,實(shí)際上它們是按照順序從上往下挨個(gè)執(zhí)行的。如果上面的任務(wù)比較復(fù)雜,會(huì)影響到下面任務(wù)的運(yùn)行時(shí)間。
解決方法:用多線程/多進(jìn)程。開(kāi)了一條線程,就把job獨(dú)立出去運(yùn)行了,不會(huì)占主進(jìn)程的cpu時(shí)間,schedule并沒(méi)有花掉執(zhí)行一個(gè)任務(wù)的時(shí)間,它的開(kāi)銷(xiāo)只是開(kāi)啟一條線程的時(shí)間。
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)
編寫(xiě)bat執(zhí)行python腳本
編寫(xiě)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
- 第一行作用是使批處理后臺(tái)運(yùn)行,即運(yùn)行時(shí)不出現(xiàn)CMD窗口;
- 第二行作用是不顯示命令;
- 第三行是絕對(duì)路徑調(diào)用python.exe執(zhí)行指定pyhon腳本
執(zhí)行bat腳本
-
將bat腳本放置于啟動(dòng)項(xiàng)路徑,開(kāi)機(jī)自啟動(dòng):
Win10路徑Example:
C:\Users\lyuzi\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
- 雙擊運(yùn)行,直接啟動(dòng)。
停止執(zhí)行python
粗暴地直接kill掉python.exe
cmd:
taskkill -f -t -im python.exe
tips:
建議在python腳本中寫(xiě)log記錄運(yùn)行情況。因?yàn)楹笈_(tái)執(zhí)行bat就不知道怎么看它有沒(méi)有跑了。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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