⑴ 如何用python一門語言通吃高性能並發,GPU計算和深度學習
第一個就是並發本身所帶來的開銷即新開處理線程、關閉處理線程、多個處理線程時間片輪轉所帶來的開銷。
實際上對於一些邏輯不那麼復雜的場景來說這些開銷甚至比真正的處理邏輯部分代碼的開銷更大。所以我們決定採用基於協程的並發方式,即服務進程只有一個(單cpu)所有的請求數據都由這個服務進程內部來維護,同時服務進程自行調度不同請求的處理順序,這樣避免了傳統多線程並發方式新建、銷毀以及系統調度處理線程的開銷。基於這樣的考慮我們選擇了基於Tornado框架實現api服務的開發。Tornado的實現非常簡潔明了,使用python的生成器作為協程,利用IOLoop實現了調度隊列。
第二個問題是資料庫的性能,這里說的資料庫包括MongoDB和Redis,我這里分開講。
先講MongoDB的問題,MongoDB主要存儲不同的用戶對於驗證的不同設置,比如該顯示什麼樣的圖片。
一開始每次驗證請求都會查詢MongoDB,當時我們的MongoDB是純內存的,同時三台機器組成一個復制集,這樣的組合大概能穩定承載八九千的qps,後來隨著我們驗證量越來越大,這個承載能力逐漸就成為了我們的瓶頸。
為了徹底搞定這個問題,我們提出了最極端的解決方案,乾脆直接把資料庫中的數據完全緩存到服務進程里定期批量更新,這樣查詢的開銷將大大降低。但是因為我們用的是Python,由於GIL的存在,在8核伺服器上會fork出來8個服務進程,進程之間不像線程那麼方便,所以我們基於mmap自己寫了一套夥伴演算法構建了一個跨進程共享緩存。自從這套緩存上線之後,Mongodb的負載幾乎變成了零。
說完了MongoDB再說Redis的問題,Redis代碼簡潔、數據結構豐富、性能強大,唯一的問題是作為一個單進程程序,終究性能是有上限的。
雖然今年Redis發布了官方的集群版本,但是經過我們的測試,認為這套分布式方案的故障恢復時間不夠優秀並且運維成本較高。在Redis官方集群方案面世之前,開源世界有不少proxy方案,比如Twtter的TwemProxy和豌豆莢的Codis。這兩種方案測試完之後給我們的感覺TwemProxy運維還是比較麻煩,Codis使用起來讓人非常心曠神怡,無論是修改配置還是擴容都可以在配置頁面上完成,並且性能也還算不錯,但無奈當時Codis還有比較嚴重的BUG只能放棄之。
幾乎嘗試過各種方案之後,我們還是下決心自己實現一套分布式方案,目的是高度貼合我們的需求並且運維成本要低、擴容要方便、故障切換要快最重要的是數據冗餘一定要做好。
基於上面的考慮,我們確定基於客戶端的分布式方案,通過zookeeper來同步狀態保證高可用。具體來說,我們修改Redis源碼,使其向zookeeper注冊,客戶端由zookeeper上獲取Redis伺服器集群信息並根據統一的一致性哈希演算法來計算數據應該存儲在哪台Redis上,並在哈希環的下一台Redis上寫入一份冗餘數據,當讀取原始數據失敗時可以立即嘗試讀取冗餘數據而不會造成服務中斷。
⑵ python怎麼安裝gpu版本的TensorFlow
windows的話打開cmd,然後輸入pip install tensorflow_gpu即可
⑶ 如何用Python一門語言通吃高性能並發,GPU計算和深度學習
一、os模塊概述
Python os模塊包含普遍的操作系統功能。如果你希望你的程序能夠與平台無關的話,這個模塊是尤為重要的。(一語中的)
二、常用方法
1、os.name
輸出字元串指示正在使用的平台。如果是window 則用'nt'表示,對於linux/Unix用戶,它是'posix'。
2、os.getcwd()
函數得到當前工作目錄,即當前Python腳本工作的目錄路徑。
3、os.listdir()
返回指定目錄下的所有文件和目錄名。
>>> os.listdir(os.getcwd())
['Django', 'DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'MySQL-python-wininst.log', 'NEWS.txt', 'PIL-wininst.log', 'python.exe', 'pythonw.exe', 'README.txt', 'RemoveMySQL-python.exe', 'RemovePIL.exe', 'Removesetuptools.exe', 'Scripts', 'setuptools-wininst.log', 'tcl', 'Tools', 'w9xpopen.exe']
⑷ opencv_python4.1如何GPU加速,需不需要重新編譯之類的
需要重新編譯opencv 的,最後getCudaEnabledDeviceCount();這個函數返回值大於零才行 // first.cpp : 定義控制台應用程序的入口點。 // #include "stdafx.h" #include #include "opencv2/opencv.hpp" #include "opencv2/gpu/gpu.hpp" #pragma co..
⑸ 用python寫GPU上的並行計算程序,有什麼庫或者編譯器
用python寫GPU上的並行計算程序,有什麼庫或者編譯器
在python命令行輸入以下命令: >>>import django >>>django.VERSION (1,4,0,'final',0) >>> (1,4,0,'final',0)是我的版本,就是1.4.0版本
你好:
這個你需要看一下包的定義和導入了;
在python裡面含有__init__.py的文件的文件夾叫做包;
才能進行導入:
from django.http import httpresponse
表示:django是一個包,它下麵包含一個包http,
httpresponse應該是類名;
⑹ python怎麼安裝gpu版本的TensorFlow
下載anaconda2並安裝到d:\anaconda
下載anaconda3:注意版本,集成的必須是python3.5的,最新的為python3.6的,我下載的是anaconda3.4.2.0版本的,然後安裝到d:\anaconda\envs\py3
!
⑺ 怎樣使用gpu加速python深度學習
Colman裡面可以調模式的。
⑻ caffe python代碼怎麼用 gpu運行
編譯和安裝Caffe 。。。但我在編譯caffe時 輸入make all 指令時報錯 :提示找不到hdf5.h 我網路後 http://blog.csdn.net/kexinmcu/article/details/52316986 按照這個解決了。這樣make all 成功 make test也成功 make runtest也成功。 再開始其第3步:增加python支持這步 開始我看不清 就從這里開始參考:http://www.linuxdiyf.com/linux/24836.html 編譯python時: make pycaffe報錯:找不到arrayobject.h 解決辦法:sudo apt-get install python-numpy 這樣就解決了。這樣第3步的幾條指令均成功。再開始第4步 第4.2步報錯說:pip 找不到指令 於是我在終端輸入sudo apt-get install python-pip即解決了。 接著執行4.2步 第一個ipython[all]裝時失敗了 我就先裝後面的幾個 有的成功 有的失敗 失敗的是protobuf和skimage 解決辦法是:自己
⑼ 用GPU做python程序並行到底用什麼好
因為我的程序中需要並行的是優化計算的evaluation部分,所以如果能夠找到一些支持並行優化的庫就可以。 從python官網上,可以找到一個DEAP庫(git上有),利用map進行並行計算。 這個庫的優點是,documents和例子是非常詳細的。