9/20
功能測過正常可以跑了,接下來就是準備測效能,優化效能!
Python Profile
學習清單
-
將寫好的靜態輸入資料庫api優化效能(優先)
-
自寫程式提供資料傳給自己寫的動態api(優先)
-
看傳遞資料書書學習(優先)
-
看python Introduction學習(自修)
-
重修資料結構,資訊網路,物件導向,演算法(自修)
看request API如何使用(1小時半)
將api優化,針對API優化
1. api寫錯,沒有正確使用library
2. 自身coding習慣,程式上的優化
對於重複使用的值跟變數(這邊例子為重複使用的連結db url)
寫成常數定義
使用假的domain串(nginx,uwsgi)
docker-compose --help
add host
針對傳輸資料的優化有分:
寫入資料庫的優化 >> 使用Connection Pool,處理有關Request跟Connection連接問題
資料庫寫入硬體的disk 優化
以下先針對connection 的問題優化(5hours)
**要觀察connection pool 是否保證可多個thread的攻打,這樣的library就值得被信賴使用
mysql-connector
https://dev.mysql.com/doc/connector-python/en/connector-python-connection-pooling.html
***小技巧:程式的easy-test
#test.py
def test():
return ("Hi!")
<strong>if __name__ == '__main__':</strong>
test()
#終端機跑
$python test.py
#debug skill
<strong>try:</strong>
test()
<strong>except BaseException as e:</strong>
<strong>return str(e)</strong>
return"OK"
$cat 檔案名 ls -l
$docker-compose exec container ls -l
$docker-compose exec container ls
$diff ______
#docker-compose exec container cat 檔案名
$ docker-compose exec container cat 檔案名 | unix2dos | md5
91bb3b15e09f62******************
$ cat 檔案名 | unix2dos | md5
91bb3b15e0**********************
`dos2unix` 看起來也行
1.將Connection Pool從函式裡面搬到Global
format用法
#這邊要設變數
'mysql+pymysql://{user}:{pw}@{host}:{port}/{db}'.format(user=user,pw=pw,host=host,port=port,db=db)
- 將過多重複的值+變數統一彙整定義變數
優化過後
速度提升3-5倍
中秋連假homework: thread safe, curl, 書, git scratch, 其它這兩週學的
筆記一下:http://einverne.github.io/post/2017/05/sqlalchemy-session.html
9/21
STUDY 資料視覺化書+STUDY Linux (1hours)
好拔,由於星巴克待不慣,所以我跑回來原來的地方
結果就順手測了以下的功能(1hours)
Driver 傳輸資料
SQLAlchemy Driver by execute 實測速度:132.8/sec
Pymysql Driver by execute 實測速度:101.3/sec
Pymysql Driver by executemany 懶得寫懶得測
中秋連假的功課啊啊!!!
-
將書看完
-
linux語法
-
git scratch
-
把這兩週學的複習