導航:首頁 > 編程語言 > python實現定時器

python實現定時器

發布時間:2022-09-12 21:43:18

python的計時器

你可以用Twisted來實現,源代碼如下:

from twisted.internet import task
from twisted.internet import reactor

#set global variables
g = 0
def run():
global g
g = g + 1
print 'the global value g is:%s'%g
#add function run to twisted's looping call
l = task.LoopingCall(run)
#set interval to 5*60 seconds
l.start(5*60)
reactor.run()
要運行這段代碼你得裝twisted和zope中關於interface的定義,上google搜搜載一個裝了就可以了。

❷ python中使用chaco如何實現定時器刷新功能

方法/步驟
Python若需要用到定時器進行休眠,可使用 time模塊中的sleep方法,讓程序休眠,具體形式如下:
time.sleep(數字)
其中「數字」是以秒為單位,如果想定時毫秒,可以使用小數,0.1秒則代表休眠100毫秒。
# 例1:循環輸出休眠100毫秒import time
i = 1
while i <= 5:
print i # 輸出i
i += 1
time.sleep(0.1) # 休眠0.1秒
# 例2:循環輸出休眠2秒
import time
i = 1
while i <= 5:
print i # 輸出i
i += 1
time.sleep(2) # 休眠1秒

❸ 如何用python實現一個多線程定時器

windows下定時器到時發送消息,進程接收到消息以後執行相應操作。其優先順序很低,在該進程的時間片區里,還要等到重要的消息執行完畢後才會執行。所以一般定時器從來干一些不重要的事情例如刷新畫面。

❹ 如何實現python的定時器

用time.sleep方法。如果要非阻塞的就放在一個單獨線程里。

❺ 如何調用定時器 python

1 if __name__ == "__main__": 2 Q_w = 0 3 w = TimerMask(howtime=0.8) 4 print("-") 5 w.start() 6 #這里線程輸出這些,做其他事情的 7 while True: 8 time.sleep(0.4) #0.4秒 9 print("- ",Q_w," - WMask:",w) 10 Q_w += 1 11 pa

輸出:

於是你可能會想問,那豈不是每個不同的行為都要寫一個繼承了BaseTimer的類來做事呢,其實不然,你可以寫個函數調用的TimerFunc類:

1 class TimerFunc(BaseTimer): 2 """可傳遞任何函數的定時任務類""" 3 def __init__(self,func,howtime=1.0,enring=True): 4 BaseTimer.__init__(self,howtime,enring) 5 self.func = func 6 7 def exec(self): 8 self.func() #調用函數 9 10 #使用方法: 11 def doing(): 12 print("Hello") 13 14 w = TimerFunc(doing) 15 w.start()

輸出:"Hello",並且會每隔1秒執行一次

是不是覺得可以做一堆事情了?你可以自由發揮,繼承BaseTimer類

1 w = TimerFunc(doing,5,False) #這樣就可以定義延遲5秒使用了~ 2 w.start()

❻ python動態添加刪除定時任務

可以基於tornado-APScheler實現添加動態添加/刪除/暫停/清除定時任務。
安裝:pip3 install apsheler
1.任何調度器在開始後,不能再次start。不然會出現異常
2.shutdown方法:終結掉對應的調度器,所以代碼邏輯里需要檢測一下. running方法可以判斷調度器的運行狀態,如果需要設計delete方法清除某個任務,建議用remove方法,對應代碼邏輯需要注意start()不要重復
3.注意BlockingScheler,如果你想動態添加任務的話,這個調度器是阻塞的,所以每個任務必須是一個守護線程,個人感覺不太方便,建議用其他非阻塞的
4. get_jobs()方法很有用,如果我們加上dir,配合這個方法可以很靈活地配置
5.修改一個周期任務,需要用modify_job方法,根據你的job_id修改
Python由荷蘭數學和計算機科學研究學會的Guido van Rossum 於1990 年代初設計,作為一門叫做ABC語言的替代品。 Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用於獨立的、大型項目的開發。

❼ python如何實現程序定時執行的功能

sleep就可以吧,把程序作為一個線程,啟動線程,裡面加個sleep,示例如下:
import threading
import time
class Test(threading.Thread):
def __init__(self):
pass

def test(self):
print 'run test!'

def run(self):
while True:
print time.strftime('%Y-%m-%d %H:%M:%S')
self.test()
time.sleep(5)
#test...
a=Test()
a.run()
#...test

❽ 如何用python寫一個計時器

可以用time.sleep(1)睡眠一秒加一,然後大於180秒是停止,用while會方便一點,
望採納

❾ python 如何實現web.py定時更新數據

1.1. 需求背景。

每天抓取的是同一份商品的數據,用來做趨勢分析。
要求每天都需要抓一份,也僅限抓取一份數據。
但是整個爬取數據的過程在時間上並不確定,受本地網路,代理速度,抓取數據量有關,一般情況下在20小時左右,極少情況下會超過24小時。
1.2. 實現功能。

通過以下三步,保證爬蟲能自動隔天抓取數據:
每天凌晨00:01啟動監控腳本,監控爬蟲的運行狀態,一旦爬蟲進入空閑狀態,啟動爬蟲。一旦爬蟲執行完畢,自動退出腳本,結束今天的任務。一旦腳本距離啟動時間超過24小時,自動退出腳本,等待第二天的監控腳本啟動,重復這三步。
小編是一名python開發工程師,這里有我自己整理了一套最新的python系統學習教程,包括從基礎的python腳本到web開發、爬蟲、數據分析、數據可視化、機器學習等。想要這些資料的可以關注小編,並在後台私信小編:「01」即可領取
2. 環境。

python 3.6.1
系統:win7
IDE:pycharm
安裝過scrapy
3. 設計思路。

3.1. 前提:目前爬蟲是通過scrapy模塊自帶的cmdline.execute來啟動的。

from scrapy import cmdline
cmdline.execute('scrapy crawl mySpider'.split())12
3.2. 將自動執行腳本做到scrapy爬蟲的外部

(1)每天凌晨00:01啟動腳本(控制腳本的存活時間為24小時),監測爬蟲的運行狀態(需要用一個標記信息來表示爬蟲的狀態:運行還是停止)。
如果爬蟲處於運行狀態(前一天爬取數據尚未結束),進入第(2)步;如果爬蟲處於非運行狀態(前一天的爬取任務已完成,今天的尚未開始),進入第(3)步;
(2)腳本進入等待階段,每隔10分鍾,檢查一下爬蟲的運行狀態,如(1)。但是一旦發現,腳本的等待時間超過了24小時,則自動退出腳本,因為第二天的監測腳本已經開始運行了,接替了它的任務。
(3)做一些爬蟲啟動前的准備工作(刪除用來續爬的文件,防止爬蟲不運行了),啟動爬蟲爬取數據,待爬蟲正常結束後,退出腳本,完成當天的爬取任務。
4. 准備工作。

4.1. 標記爬蟲的運行狀態。

通過判斷文件是否存在的方式來判斷爬蟲是否處於運行狀態:

在爬蟲啟動時,創建一個isRunning.txt文件。
在爬蟲結束時,刪除這個isRunning.txt文件。
那麼isRunning.txt存在,就說明爬蟲正在運行;文件不存在,就說明爬蟲不在運行。

# 文件pipelines.py
# 爬蟲啟動時
checkFile = "isRunning.txt"
class myPipeline:
def open_spider(self, spider):
self.client = MongoClient('localhost:27017') # 連接Mongodb
self.db = self.client['mydata'] # 待存儲數據的資料庫mydata
f = open(checkFile, "w") # 創建一個文件,代表爬蟲在運行中
f.close()123456789
# 文件pipelines.py
# 爬蟲正常結束時
checkFile = "isRunning.txt"
class myPipeline:
def close_spider(self, spider):
self.client.close()
isFileExsit = os.path.isfile(checkFile)
if isFileExsit:
os.remove(checkFile)123456789
4.2. 爬蟲支持續爬,能隨時暫停,方便調試。

# 在scrapy項目中添加start.py文件,用於啟動爬蟲
from scrapy import cmdline
# 在爬蟲運行過程中,會自動將狀態信息存儲在crawls/storeMyRequest目錄下,支持續爬
cmdline.execute('scrapy crawl mySpider -s JOBDIR=crawls/storeMyRequest'.split())
# Note:若想支持續爬,在ctrl+c終止爬蟲時,只能按一次,爬蟲在終止時需要進行善後工作,切勿連續多次按ctrl+c12345

4.3. Log按照每天的日期命名,方便查看和調試

設置Log等級:
# 文件mySpider.py
class mySpider(CrawlSpider):
name = "mySpider"
allowed_domains = ['http://photo.poco.cn/']
custom_settings = {
'LOG_LEVEL':'INFO', # 減少Log輸出量,僅保留必要的信息
# ...... 在爬蟲內部用custom_setting可以讓這個配置信息僅對這一個爬蟲生效
}12345678
以日期為Log文件命名
# 文件settings.py
import datetime
BOT_NAME = 'mySpider'
ROBOTSTXT_OBEY = False
startDate = datetime.datetime.now().strftime('%Y%m%d')
LOG_FILE=f"mySpiderlog{startDate}.txt"123456
4.4. 為數據按日期存儲到不同的表(mongodb的集合)中

# 文件pipelines.py
import datetime
GALANCE=f'galance{datetime.datetime.now().strftime("%Y%m%d")}' # 表名123
class myPipeline:
def open_spider(self, spider):
self.client = MongoClient('localhost:27017') # 連接Mongodb
self.db = self.client['mydata'] # 待存儲數據的資料庫mydata1234
self.db[GALANCE].insert(dict(item))1

4.5. 編寫批處理文件啟動爬蟲

# 文件run.bat
cd /d F:/newClawer20170831/mySpider
call python main.py
pause1234

5. 實現代碼

5.1. 編寫python腳本

# 文件timerStartDaily.py
from scrapy import cmdline
import datetime
import time
import shutil
import os

recoderDir = r"crawls" # 這是為了爬蟲能夠續爬而創建的目錄,存儲續爬需要的數據
checkFile = "isRunning.txt" # 爬蟲是否在運行的標志

startTime = datetime.datetime.now()
print(f"startTime = {startTime}")

i = 0
miniter = 0
while True:
isRunning = os.path.isfile(checkFile)
if not isRunning: # 爬蟲不在執行,開始啟動爬蟲
# 在爬蟲啟動之前處理一些事情,清掉JOBDIR = crawls
isExsit = os.path.isdir(recoderDir) # 檢查JOBDIR目錄crawls是否存在
print(f"mySpider not running, ready to start. isExsit:{isExsit}")
if isExsit:
removeRes = shutil.rmtree(recoderDir) # 刪除續爬目錄crawls及目錄下所有文件
print(f"At time:{datetime.datetime.now()}, delete res:{removeRes}")
else:
print(f"At time:{datetime.datetime.now()}, Dir:{recoderDir} is not exsit.")
time.sleep(20)
clawerTime = datetime.datetime.now()
waitTime = clawerTime - startTime
print(f"At time:{clawerTime}, start clawer: mySpider !!!, waitTime:{waitTime}")
cmdline.execute('scrapy crawl mySpider -s JOBDIR=crawls/storeMyRequest'.split())
break #爬蟲結束之後,退出腳本
else:
print(f"At time:{datetime.datetime.now()}, mySpider is running, sleep to wait.")
i += 1
time.sleep(600) # 每10分鍾檢查一次
miniter += 10
if miniter >= 1440: # 等待滿24小時,自動退出監控腳本
3839
5.2. 編寫bat批處理文件

# 文件runTimerRunDaily.bat
cd /d F:/newClawer20170831/mySpider
call python timerStartDaily.py
pause1234
6. 部署。

6.1. 添加計劃任務。

參考以下這篇博客部署windows計劃任務:

http://blog.csdn.net/zwq912318834/article/details/77280573
有關windows計劃任務相關設置的詳細說明如下:

https://technet.microsoft.com/zh-cn/library/cc722178.aspx
6.2. 注意事項。

(1)在添加計劃任務時,要按照如下圖進行勾選(只在用戶登錄時運行),才能彈出下面的cmd任務界面,方便觀察和調試。
(2)由於爬蟲運行時間很長,如果按照默認設置,在凌晨運行實例時,上一次啟動尚未結束,會導致這次啟動失敗,所以要更改默認設置為(如果此任務已經運行:並行運行新實例。保護機制在於每個啟動腳本在等待24小時候會自動退出,來保證不會重復啟動)。
(3)如果想支持續傳,只能按一次 ctrl + c 來停止爬蟲運行。因為終止爬蟲時,爬蟲需要做一些善後工作,如果連續按多次ctrl + c來停止爬蟲,爬蟲將來不及善後,會導致無法續爬。

❿ 如何用Python寫一個每分每時每天的定時程序

如何定時執行
a.我們先獲取當前的時間
now=datetime.datetime.now()
假設當前時間是2017-02-09 20:19:47.555000
b.然後我們輸入一個你要定時執行的target時間
比如你是x分10秒的時候執行sched_Timer=datetime.datetime(x,x,x,x,x,10)
前面的x是並不重要(只要最後是10秒就行了),我們就把目標時間設的比當前晚一點即可:
sched_Timer=datetime.datetime(2017,2,9,20,20,10)
c.好當時間到了20:20:10的時候要運行我們的程序
如何定時到了呢,很簡單用
if now==sched_Timer:
'run Task'
d.那麼如何讓時間在下一分鍾10秒繼續執行呢,也很簡單用timedelta()
datetime.timedelta(minutes=1)把target時間往後增加一分鍾
sched_Timer=sched_Timer+datetime.timedelta(minutes=1)
然後外邊用個while 死循環hold住就可以了

閱讀全文

與python實現定時器相關的資料

熱點內容
python超簡單編程 瀏覽:257
獲取命令方 瀏覽:976
怎樣製作文件夾和圖片 瀏覽:58
調研編譯寫信息 瀏覽:859
python馮諾依曼 瀏覽:417
同時安裝多個app有什麼影響 瀏覽:252
奧術殺戮命令宏 瀏覽:182
用sdes加密明文字母e 瀏覽:359
單片機原理及應用試題 瀏覽:423
易語言開啟指定文件夾 瀏覽:40
馬思純參加密室大逃脫 瀏覽:322
文件夾冬季澆築溫度 瀏覽:712
京東有返點的aPp叫什麼 瀏覽:603
如何查看u點家庭伺服器是幾兆 瀏覽:262
python應用介面怎麼接 瀏覽:67
腐蝕怎麼進不去伺服器啊 瀏覽:359
linuxcpiogz 瀏覽:631
安卓中的布局是什麼文件 瀏覽:397
dex反編譯部分代碼無法查看 瀏覽:464
linuxandroid編譯 瀏覽:603