各位大神,自學的python,現在想完成一個功能,功能基本可以實作,
但是總覺得資料庫操作這一塊是不是耗費資源,想讓這個腳本一直穩定運行,求優化。
腳本功能:每一秒鐘查詢一次資料庫,發現有新的資料,取回來,提交到網址格式的api里。
import pymysql
import time
import requests
import bs4
oadun_url = ""
last_id = 0
conunt_id = ""
conunt_name = ""
conunt_symbol=""
conunt_type=""
conunt_openprice=""
conunt_ticket=""
conunt_time=""
msg="" #訂單內容
# 獲取游標
#查詢訂單
while 1:
connect = pymysql.connect(host="localhost",user="root",password="",database="",charset="utf8")
print(connect)
cursor = connect.cursor()
sql = "SELECT * FROM order_info order by id desc limit 1"
cursor.execute(sql)
date = cursor.fetchall() #回傳元祖欄位值
date2=date[0]
print(date2)
conunt_id = date2[0]
print(conunt_id)
if( conunt_id > last_id): #發現新增訂單
#獲取訂單內容
conunt_name = date2[1]
conunt_symbol = date2[2]
conunt_type = date2[3]
conunt_openprice = date2[4]
conunt_ticket = date2[5]
conunt_time = date2[6]
msg = str(conunt_id)+"策略名稱:"+conunt_name+"開倉貨幣:"+conunt_symbol+"訂單型別:"+conunt_type+"開倉價位:"+conunt_openprice+"訂單號碼:"+conunt_ticket+"開倉時間:"+conunt_time
print(msg)
oadun_url = "https://api.xxx.org/sendMessag&text=策略名稱:"+conunt_name+"%0A開倉貨幣:"+conunt_symbol+"%0A訂單型別:"+conunt_type+"%0A開倉價位:"+conunt_openprice+"%0A訂單號碼:"+conunt_ticket+"%0A開倉時間:"+conunt_time
print(oadun_url)
response = requests.get(oadun_url)
status_code = response.status_code
print(status_code)
last_id = conunt_id
cursor.close()
connect.close()
time.sleep(5)
print("等待結束")
uj5u.com熱心網友回復:
每一秒鐘查詢一次資料庫頻率確實有點高了。按道理來說,資料庫的寫操作次數肯定要少于讀(也就是查詢)的操作次數!
如果你想提升自己的程式效率,那么首先要弄清楚的一個問題:
你的資料庫的寫操作頻率到底是怎么樣的?
是1秒一次還是10秒一次,還是1分鐘1次,甚至更長時間?
試想一下,如果你的寫操作頻率是1分鐘1次,那么你的查詢操作也完全可以改成1分鐘1次!
=================
另外,如果讀寫資料庫的操作都是由你自己控制的,那么最簡單的提升效率的辦法就是:
當你進行寫入操作后,直接把記憶體中的某個約定好的變數的狀態進行修改,而查詢操作仍然可以采用1秒1次監控這個相應變數的狀態變化,如果狀態發生變化了,再去進行資料庫的查詢操作!這樣子也能減少資料庫的操作從而提升程式的訪問效率!
uj5u.com熱心網友回復:
謝謝,我寫入資料庫不是固定的,也是采集資訊達到條件寫入,不過用記憶體變數就減少了資料庫查詢uj5u.com熱心網友回復:
那就按達到采集資訊的條件后設定一個記憶體變數,進行資料庫的寫入,再進行查詢(但同時將查詢結果放入快取中)。
沒有寫入操作的時候,就讀取快取!
快取你也可以理解成在記憶體中的一些變數或資料的集合!
總結:
有資料更新時查詢資料庫,沒更新時從快取中查詢!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/63803.html
下一篇:不會寫,求救啊
