python的redis模塊
A. python中我安裝了redis模塊 但是在文件中import redis 發現找不到該文件, 這個怎麼解決!
可以從 pycharm 裡面安裝
B. 盤點Python常用的模塊和包
模塊
1.定義
計算機在開發過程中,代碼越寫越多,也就越難以維護,所以為了編寫可維護的代碼,我們會把函數進行分組,放在不同的文件里。在python里,一個.py文件就是一個模塊。
2.優點:
提高代碼的可維護性。
提高代碼的復用,當模塊完成時就可以在其他代碼中調用。
引用其他模塊,包含python內置模塊和其他第三方模塊。
避免函數名和變數名等名稱沖突。
python內建模塊:
1.sys模塊
2.random模塊
3.os模塊:
os.path:講解
https://www.cnblogs.com/yufeihlf/p/6179547.html
數據可視化
1.matplotlib :
是Python可視化程序庫的泰斗,它的設計和在1980年代被設計的商業化程序語言MATLAB非常接近。比如pandas和Seaborn就是matplotlib的外包,它們讓你能用更少的代碼去調用 matplotlib的方法。
訪問:
https://matplotlib.org/
顏色:
https://www.cnblogs.com/darkknightzh/p/6117528.html
教程:
https://wizardforcel.gitbooks.io/matplotlib-user-guide/3.1.html
2.Seaborn:
它是構建在matplotlib的基礎上的,用簡潔的代碼來製作好看的圖表。Seaborn跟matplotlib最大的區別就是它的默認繪圖風格和色彩搭配都具有現代美感。
訪問:
http://seaborn.pydata.org/index.html
3.ggplot:
gplot 跟 matplotlib 的不同之處是它允許你疊加不同的圖層來完成一幅圖
訪問:
http://ggplot.yhathq.com/
4.Mayavi:
Mayavi2完全用Python編寫,因此它不但是一個方便實用的可視化軟體,而且可以方便地用Python編寫擴展,嵌入到用戶編寫的Python程序中,或者直接使用其面向腳本的API:mlab快速繪制三維圖
訪問:http://code.enthought.com/pages/mayavi-project.html
講解:https://blog.csdn.net/ouening/article/details/76595427https://www.jianshu.com/p/81e6f4f1cdd8
5.TVTK:
TVTK庫對標準的VTK庫進行包裝,提供了Python風格的API、支持Trait屬性和numpy的多維數組。
VTK (http://www.vtk.org/) 是一套三維的數據可視化工具,它由C++編寫,包涵了近千個類幫助我們處理和顯示數據
講解:https://docs.huihoo.com/scipy/scipy-zh-cn/tvtk_intro.html
機器學習
1.Scikit-learn
是一個簡單且高效的數據挖掘和數據分析工具,易上手,可以在多個上下文中重復使用。它基於NumPy, SciPy 和 matplotlib,開源,可商用(基於 BSD 許可)。
訪問:
講解:https://blog.csdn.net/finafily0526/article/details/79318401
2.Tensorflow
最初由谷歌機器智能科研組織中的谷歌大腦團隊(Google Brain Team)的研究人員和工程師開發。該系統設計的初衷是為了便於機器學習研究,能夠更快更好地將科研原型轉化為生產項目。
相關推薦:《Python視頻教程》
Web框架
1.Tornado
訪問:http://www.tornadoweb.org/en/stable/
2.Flask
訪問:http://flask.pocoo.org/
3.Web.py
訪問:http://webpy.org/
4.django
https://www.djangoproject.com/
5.cherrypy
http://cherrypy.org/
6.jinjs
http://docs.jinkan.org/docs/jinja2/
GUI 圖形界面
1.Tkinter
https://wiki.python.org/moin/TkInter/
2.wxPython
https://www.wxpython.org/
3.PyGTK
http://www.pygtk.org/
4.PyQt
https://sourceforge.net/projects/pyqt/
5.PySide
http://wiki.qt.io/Category:LanguageBindings::PySide
科學計算
教程
https://docs.huihoo.com/scipy/scipy-zh-cn/index.html#
1.numpy
訪問
http://www.numpy.org/
講解
https://blog.csdn.net/lm_is_dc/article/details/81098805
2.sympy
sympy是一個Python的科學計算庫,用一套強大的符號計算體系完成諸如多項式求值、求極限、解方程、求積分、微分方程、級數展開、矩陣運算等等計算問題
訪問
https://docs.sympy.org/0.7.1/guide.html#guide
講解
https://www.jianshu.com/p/339c91ae9f41
解方程
https://www.cnblogs.com/zyg123/p/10549354.html
3.SciPy
官網
https://www.scipy.org/
講解
https://blog.csdn.net/wsp_1138886114/article/details/80444621
4.pandas
官網
http://pandas.pydata.org/
講解
https://www.cnblogs.com/linux-wangkun/p/5903945.html
5.blaze
官網
http://blaze.readthedocs.io/en/latest/index.html
密碼學
1.cryptography
https://pypi.python.org/pypi/cryptography/
2.hashids
http://www.oschina.net/p/hashids
3.Paramiko
http://www.paramiko.org/
4.Passlib
https://pythonhosted.org/passlib/
5.PyCrypto
https://pypi.python.org/pypi/pycrypto
6.PyNacl
http://pynacl.readthedocs.io/en/latest/
爬蟲相關
requests
http://www.python-requests.org/
scrapy
https://scrapy.org/
pyspider
https://github.com/binux/pyspider
portia
https://github.com/scrapinghub/portia
html2text
https://github.com/Alir3z4/html2text
BeautifulSoup
https://www.crummy.com/software/BeautifulSoup/
lxml
http://lxml.de/
selenium
http://docs.seleniumhq.org/
mechanize
https://pypi.python.org/pypi/mechanize
PyQuery
https://pypi.python.org/pypi/pyquery/
creepy
https://pypi.python.org/pypi/creepy
gevent
一個高並發的網路性能庫
http://www.gevent.org/
圖像處理
bigmoyan
http://scikit-image.org/
Python Imaging Library(PIL)
http://www.pythonware.com/procts/pil/
pillow:
http://pillow.readthedocs.io/en/latest/
自然語言處理
1.nltk:
http://www.nltk.org/
教程
https://blog.csdn.net/wizardforcel/article/details/79274443
2.snownlp
https://github.com/isnowfy/snownlp
3.Pattern
https://github.com/clips/pattern
4.TextBlob
http://textblob.readthedocs.io/en/dev/
5.Polyglot
https://pypi.python.org/pypi/polyglot
6.jieba:
https://github.com/fxsjy/jieba
資料庫驅動
mysql-python
https://sourceforge.net/projects/mysql-python/
PyMySQL
https://github.com/PyMySQL/PyMySQL
PyMongo
https://docs.mongodb.com/ecosystem/drivers/python/
pymongo
MongoDB庫
訪問:https://pypi.python.org/pypi/pymongo/
redis
Redis庫
訪問:https://pypi.python.org/pypi/redis/
cxOracle
Oracle庫
訪問:https://pypi.python.org/pypi/cx_Oracle
SQLAlchemy
SQL工具包及對象關系映射(ORM)工具
訪問:http://www.sqlalchemy.org/
peewee,
SQL工具包及對象關系映射(ORM)工具
訪問:https://pypi.python.org/pypi/peewee
torndb
Tornado原裝DB
訪問:https://github.com/bdarnell/torndb
Web
pycurl
URL處理工具
smtplib模塊
發送電子郵件
其他庫暫未分類
1.PyInstaller:
是一個十分有用的第三方庫,它能夠在Windows、Linux、 Mac OS X 等操作系統下將 Python 源文件打包,通過對源文件打包, Python 程序可以在沒有安裝 Python 的環境中運行,也可以作為一個 獨立文件方便傳遞和管理。
2.Ipython
一種互動式計算和開發環境
講解
https://www.cnblogs.com/zzhzhao/p/5295476.html
命令
ls、cd 、run、edit、clear、exist
C. centos上python2.4安裝redis模塊,求幫忙看看什麼原因,具體錯誤如下:
上面報的是語法錯誤,但是東西是別人的寫的,因此沒辦法改,把 python 升級一下,因為低版本的python 可能與高版本的redis 不兼容,你用的redis是2.8.0 建議升到python 3.0左右
D. python怎麼安裝redis
redis python-redis 安裝詳細步驟
安裝redis
把redis安裝到 /opt/redis-2.8目錄中
tar -zxfx redis-2.8.1.tar.gz
cd redis-2.8.1
make && make PREFIX=/opt/redis-2.8 install
cp redis.conf /opt/redis-2.8/
只是把redis當做隊列用,不需要存儲,所以編輯 /opt/redis-2.8/redis.conf
設置 daemonize yes
把3條 save .. 都注釋掉,這樣就關閉了硬碟存儲
啟動redis 非常簡單: /opt/redis-2.8/bin/redis-server /opt/redis-2.8/redis.conf
$REIDS_INSTALL_DIR/utils/redis_init_script 這個腳本稍做修改就可以放到/etc/init.d 作為redis啟動腳本用
安裝python
CentOS 自帶的python2.4,太舊了,升級到2.7
tar -zvxf Python-2.7.6.tgz
cd Python-2.7.6
./configure
make && make install
替換系統默認的python: sudo ln -s /usr/local/bin/python2.7 /usr/bin/python
安裝python的redis模塊
wget --no-check-certificate 2.8.0.tar.gz
tar -zvxf redis-2.8.0.tar.gz
mv redis-2.8.0 python-redis-2.8.0
cd python-redis-2.8.0
python setup.py install
部署成功
E. python 的 redis 庫,連接池怎麼用
Redis 的連接池是多線程安全的、多進程安全的、自動重連的。
你扔 flask.g 之類的全局的地方當然也行,反正 Redis 總是會使用連接池(不指定它每次就用一個新的)。顯式指定連接池的話差異不大純襪,反正你總是要手動在某個全局的地方存一樣東西(連接池對象或者 Redis 對象)。
redis庫的 Redis 類型,構造的時候接受一個 connection_pool 參數.但是這個參慶爛數怎麼用呢?想不清楚.
如果是應用程序, 程序起來的時候我做一個鏈接,把對象傳來傳去,或者保存為全局,就可以不用做差激再連接直接操作了.也用不到 pool
如果是Web 程序,如果用 flask , 我把對象保存到 g 下面,也用不到 pool
如果Web 程序用 django ,每次鏈接都是新的,更不知道怎麼用了.
F. redis 一個資料庫能存多少數據
redis一個實例能存一個key或是value大小最大是512M。操作方法如下:
1、首先要安裝redis,開啟redis的服務。
G. python 用redis做什麼功能
redis-py提供兩個類Redis和StrictRedis用於實現Redis的命令,StrictRedis用於實現大部分官方的命令,
並使用官方的語法和命令,Redis是StrictRedis的子類,用於向後兼容舊版本的redis-py。
import redis 導入redis模塊,通過python操作redis 也可以直接在redis主機的服務端操作緩存資料庫
r = redis.Redis(host='192.168.19.130', port=6379) host是redis主機,需要redis服務端和客戶端都起著 redis默認埠是6379
r.set('foo', 'Bar') key是"foo" value是"bar" 將鍵值對存入redis緩存
print r.get('foo') Bar 取出鍵foo對應的值!
H. python2.7安裝rediscluster模塊報錯,求助
1如果是在windows上請下載PYTHON2.6的安裝程序,然後直接運行即可安裝完成。2安裝完成後需要到系統的環境變數處設置PYTHON的環境變數具體設置方法如圖3在命令行鍵入python遍可以進入PYTHON的交互編程界面。如果需要在LINUX上安裝以CENTO
I. python怎麼修改redis key
Python的春或Redis模塊汪頃管理鍵(Key)方法主要實現的Redis命令包括KEYS、GET、DEL(delete)、EXISTS、RANDOMKEY,TYPE、EXPIRE,其他的一些不能實現的在代碼注釋裡面有所體現扒陵伍。
J. 如何在後台部署深度學習模型
搭建深度學習後台伺服器
我們的Keras深度學習REST API將能夠批量處理圖像,擴展到多台機器(包括多台web伺服器和Redis實例),並在負載均衡器之後進行循環調度。
為此,我們將使用:
KerasRedis(內存數據結構存儲)
Flask (Python的微web框架)
消息隊列和消息代理編程範例
- redis-server
- python run_keras_server.py
- curl -X POST -F [email protected] 'http://localhost:5000/predict'
- {"predictions": [{"label": "beagle","probability": 0.9461546540260315},{"label": "bluetick","probability": 0.031958919018507004},{"label": "redbone","probability": 0.006617196369916201},{"label": "Walker_hound","probability": 0.0033879687543958426},{"label": "Greater_Swiss_Mountain_dog","probability": 0.0025766862090677023}],"success": true}
- # import the necessary packagesimport requests# initialize the Keras REST API endpoint URL along with the input# image pathKERAS_REST_API_URL = "http://localhost:5000/predict"IMAGE_PATH = "jemma.png"
- # load the input image and construct the payload for the requestimage = open(IMAGE_PATH, "rb").read()payload = {"image": image}# submit the requestr = requests.post(KERAS_REST_API_URL, files=payload).json()# ensure the request was sucessfulif r["success"]: # loop over the predictions and display them for (i, result) in enumerate(r["predictions"]): print("{}. {}: {:.4f}".format(i + 1, result["label"], result["probability"]))# otherwise, the request failedelse: print("Request failed")
- python simple_request.py
本篇文章的整體思路如下:
我們將首先簡要討論Redis數據存儲,以及如何使用它促進消息隊列和消息代理。然後,我們將通過安裝所需的Python包來配置Python開發環境,以構建我們的Keras深度學習REST API。一旦配置了開發環境,就可以使用Flask web框架實現實際的Keras深度學習REST API。在實現之後,我們將啟動Redis和Flask伺服器,然後使用cURL和Python向我們的深度學習API端點提交推理請求。最後,我們將以對構建自己的深度學習REST API時應該牢記的注意事項的簡短討論結束。
第一部分:簡要介紹Redis如何作為REST API消息代理/消息隊列
測試和原文的命令一致。
第三部分:配置Python開發環境以構建Keras REST API
文章中說需要創建新的虛擬環境來防止影響系統級別的python項目(但是我沒有創建),但是還是需要安裝rest api所需要依賴的包。以下為所需要的包。
第四部分:實現可擴展的Keras REST API
首先是Keras Redis Flask REST API數據流程圖
讓我們開始構建我們的伺服器腳本。為了方便起見,我在一個文件中實現了伺服器,但是它可以按照您認為合適的方式模塊化。為了獲得最好的結果和避免復制/粘貼錯誤,我建議您使用本文的「下載」部分來獲取相關的腳本和圖像。
為了簡單起見,我們將在ImageNet數據集上使用ResNet預訓練。我將指出在哪裡可以用你自己的模型交換ResNet。flask模塊包含flask庫(用於構建web API)。redis模塊將使我們能夠與redis數據存儲介面。從這里開始,讓我們初始化將在run_keras_server.py中使用的常量.
我們將向伺服器傳遞float32圖像,尺寸為224 x 224,包含3個通道。我們的伺服器可以處理一個BATCH_SIZE = 32。如果您的生產系統上有GPU(s),那麼您需要調優BATCH_SIZE以獲得最佳性能。我發現將SERVER_SLEEP和CLIENT_SLEEP設置為0.25秒(伺服器和客戶端在再次輪詢Redis之前分別暫停的時間)在大多數系統上都可以很好地工作。如果您正在構建一個生產系統,那麼一定要調整這些常量。
讓我們啟動我們的Flask app和Redis伺服器:
在這里你可以看到啟動Flask是多麼容易。在運行這個伺服器腳本之前,我假設Redis伺服器正在運行(之前的redis-server)。我們的Python腳本連接到本地主機6379埠(Redis的默認主機和埠值)上的Redis存儲。不要忘記將全局Keras模型初始化為None。接下來我們來處理圖像的序列化:
Redis將充當伺服器上的臨時數據存儲。圖像將通過諸如cURL、Python腳本甚至是移動應用程序等各種方法進入伺服器,而且,圖像只能每隔一段時間(幾個小時或幾天)或者以很高的速率(每秒幾次)進入伺服器。我們需要把圖像放在某個地方,因為它們在被處理前排隊。我們的Redis存儲將作為臨時存儲。
為了將圖像存儲在Redis中,需要對它們進行序列化。由於圖像只是數字數組,我們可以使用base64編碼來序列化圖像。使用base64編碼還有一個額外的好處,即允許我們使用JSON存儲圖像的附加屬性。
base64_encode_image函數處理序列化。類似地,在通過模型傳遞圖像之前,我們需要反序列化圖像。這由base64_decode_image函數處理。
預處理圖片
我已經定義了一個prepare_image函數,它使用Keras中的ResNet50實現對輸入圖像進行預處理,以便進行分類。在使用您自己的模型時,我建議修改此函數,以執行所需的預處理、縮放或規范化。
從那裡我們將定義我們的分類方法
classify_process函數將在它自己的線程中啟動,我們將在下面的__main__中看到這一點。該函數將從Redis伺服器輪詢圖像批次,對圖像進行分類,並將結果返回給客戶端。
在model = ResNet50(weights="imagenet")這一行中,我將這個操作與終端列印消息連接起來——根據Keras模型的大小,載入是即時的,或者需要幾秒鍾。
載入模型只在啟動這個線程時發生一次——如果每次我們想要處理一個映像時都必須載入模型,那麼速度會非常慢,而且由於內存耗盡可能導致伺服器崩潰。
載入模型後,這個線程將不斷輪詢新的圖像,然後將它們分類(注意這部分代碼應該時尚一部分的繼續)
在這里,我們首先使用Redis資料庫的lrange函數從隊列(第79行)中獲取最多的BATCH_SIZE圖像。
從那裡我們初始化imageIDs和批處理(第80和81行),並開始在第84行開始循環隊列。
在循環中,我們首先解碼對象並將其反序列化為一個NumPy數組image(第86-88行)。
接下來,在第90-96行中,我們將向批處理添加圖像(或者如果批處理當前為None,我們將該批處理設置為當前圖像)。
我們還將圖像的id附加到imageIDs(第99行)。
讓我們完成循環和函數
在這個代碼塊中,我們檢查批處理中是否有圖像(第102行)。如果我們有一批圖像,我們通過模型(第105行)對整個批進行預測。從那裡,我們循環一個圖像和相應的預測結果(110-122行)。這些行向輸出列表追加標簽和概率,然後使用imageID將輸出存儲在Redis資料庫中(第116-122行)。
我們使用第125行上的ltrim從隊列中刪除了剛剛分類的圖像集。最後,我們將睡眠設置為SERVER_SLEEP時間並等待下一批圖像進行分類。下面我們來處理/predict我們的REST API端點
稍後您將看到,當我們發布到REST API時,我們將使用/predict端點。當然,我們的伺服器可能有多個端點。我們使用@app。路由修飾符以第130行所示的格式在函數上方定義端點,以便Flask知道調用什麼函數。我們可以很容易地得到另一個使用AlexNet而不是ResNet的端點,我們可以用類似的方式定義具有關聯函數的端點。你懂的,但就我們今天的目的而言,我們只有一個端點叫做/predict。
我們在第131行定義的predict方法將處理對伺服器的POST請求。這個函數的目標是構建JSON數據,並將其發送回客戶機。如果POST數據包含圖像(第137和138行),我們將圖像轉換為PIL/Pillow格式,並對其進行預處理(第141-143行)。
在開發這個腳本時,我花了大量時間調試我的序列化和反序列化函數,結果發現我需要第147行將數組轉換為C-contiguous排序(您可以在這里了解更多)。老實說,這是一個相當大的麻煩事,但我希望它能幫助你站起來,快速跑。
如果您想知道在第99行中提到的id,那麼實際上是使用uuid(通用唯一標識符)在第151行生成的。我們使用UUID來防止hash/key沖突。
接下來,我們將圖像的id和base64編碼附加到d字典中。使用rpush(第153行)將這個JSON數據推送到Redis db非常簡單。
讓我們輪詢伺服器以返回預測
我們將持續循環,直到模型伺服器返回輸出預測。我們開始一個無限循環,試圖得到157-159條預測線。從這里,如果輸出包含預測,我們將對結果進行反序列化,並將結果添加到將返回給客戶機的數據中。我們還從db中刪除了結果(因為我們已經從資料庫中提取了結果,不再需要將它們存儲在資料庫中),並跳出了循環(第163-172行)。
否則,我們沒有任何預測,我們需要睡覺,繼續投票(第176行)。如果我們到達第179行,我們已經成功地得到了我們的預測。在本例中,我們向客戶機數據添加True的成功值(第179行)。注意:對於這個示例腳本,我沒有在上面的循環中添加超時邏輯,這在理想情況下會為數據添加一個False的成功值。我將由您來處理和實現。最後我們稱燒瓶。jsonify對數據,並將其返回給客戶端(第182行)。這就完成了我們的預測函數。
為了演示我們的Keras REST API,我們需要一個__main__函數來實際啟動伺服器
第186-196行定義了__main__函數,它將啟動classify_process線程(第190-192行)並運行Flask應用程序(第196行)。
第五部分:啟動可伸縮的Keras REST API
要測試我們的Keras深度學習REST API,請確保使用本文的「下載」部分下載源代碼示例圖像。從這里,讓我們啟動Redis伺服器,如果它還沒有運行:
然後,在另一個終端中,讓我們啟動REST API Flask伺服器:
另外,我建議在向伺服器提交請求之前,等待您的模型完全載入到內存中。現在我們可以繼續使用cURL和Python測試伺服器。
第七部分:使用cURL訪問Keras REST API
使用cURL來測試我們的Keras REST API伺服器。這是我的家庭小獵犬Jemma。根據我們的ResNet模型,她被歸類為一隻擁有94.6%自信的小獵犬。
你會在你的終端收到JSON格式的預測:
第六部分:使用Python向Keras REST API提交請求
如您所見,使用cURL驗證非常簡單。現在,讓我們構建一個Python腳本,該腳本將發布圖像並以編程方式解析返回的JSON。
讓我們回顧一下simple_request.py
我們在這個腳本中使用Python請求來處理向伺服器提交數據。我們的伺服器運行在本地主機上,可以通過埠5000訪問端點/predict,這是KERAS_REST_API_URL變數(第6行)指定的。
我們還定義了IMAGE_PATH(第7行)。png與我們的腳本在同一個目錄中。如果您想測試其他圖像,請確保指定到您的輸入圖像的完整路徑。
讓我們載入圖像並發送到伺服器:
我們在第10行以二進制模式讀取圖像並將其放入有效負載字典。負載通過請求發送到伺服器。在第14行發布。如果我們得到一個成功消息,我們可以循環預測並將它們列印到終端。我使這個腳本很簡單,但是如果你想變得更有趣,你也可以使用OpenCV在圖像上繪制最高的預測文本。
第七部分:運行簡單的請求腳本
編寫腳本很容易。打開終端並執行以下命令(當然,前提是我們的Flask伺服器和Redis伺服器都在運行)。
使用Python以編程方式使用我們的Keras深度學習REST API的結果
第八部分:擴展深度學習REST API時的注意事項
如果您預期在深度學習REST API上有較長一段時間的高負載,那麼您可能需要考慮一種負載平衡演算法,例如循環調度,以幫助在多個GPU機器和Redis伺服器之間平均分配請求。
記住,Redis是內存中的數據存儲,所以我們只能在隊列中存儲可用內存中的盡可能多的圖像。
使用float32數據類型的單個224 x 224 x 3圖像將消耗602112位元組的內存。