avalon-fsn 1.0.0 發布:輕鬆加速你的 Python 代碼

2021-01-21 開源中國
avalon-fsn

avalon-fsn 是一個Python的編譯構造工具,能夠將你的代碼Cython化

使用avalon-fsn的好處 代碼Cython化:Windows下把代碼編譯為pyd,Linux下把代碼編譯為.so,有效的保護原始碼 獲得性能提升:能夠在不做任何代碼級別優化的情況下,對Python代碼進行性能提升安裝

pip install avalon-fsn

編譯項目

avalon-fsn-build build_ext

編譯完畢後,對應的文件會在./build/lib*底下

使用編譯後的文件

avalon-fsn-release

執行此命令會把build目錄下的編譯文件替換到根目錄下,僅在編譯發布環境使用

##配置文件 當有定製參數的時候,可以在項目根目錄下新建配置文件avalon-fsn.json

{ "remove_models": [], "remove_files": []}

配置名稱 配置描述 remove_models 不參與編譯的模塊 remove_files 不參與編譯的文件 性能對比

import timedef run(): time_start = time.time() import sys def make_tree(depth): if not depth: return None, None depth -= 1 return make_tree(depth), make_tree(depth) def check_tree(node): (left, right) = node if not left: return 1 return 1 + check_tree(left) + check_tree(right) min_depth = 4 max_depth = max(min_depth + 2, 17) stretch_depth = max_depth + 1 print("stretch tree of depth %d\t check:" % stretch_depth, check_tree(make_tree(stretch_depth))) long_lived_tree = make_tree(max_depth) iterations = 2 ** max_depth for depth in range(min_depth, stretch_depth, 2): check = 0 for i in range(1, iterations + 1): check += check_tree(make_tree(depth)) print("%d\t trees of depth %d\t check:" % (iterations, depth), check) iterations //= 4 print("long lived tree of depth %d\t check:" % max_depth, check_tree(long_lived_tree)) time_end = time.time() print('time cost', time_end - time_start, 's')

純Python

stretch tree of depth 18 check: 524287131072 trees of depth 4 check: 406323232768 trees of depth 6 check: 41615368192 trees of depth 8 check: 41861122048 trees of depth 10 check: 4192256512 trees of depth 12 check: 4193792128 trees of depth 14 check: 419417632 trees of depth 16 check: 4194272long lived tree of depth 17 check: 262143time cost 11.279994249343872 s

Cython化

stretch tree of depth 18 check: 524287131072 trees of depth 4 check: 406323232768 trees of depth 6 check: 41615368192 trees of depth 8 check: 41861122048 trees of depth 10 check: 4192256512 trees of depth 12 check: 4193792128 trees of depth 14 check: 419417632 trees of depth 16 check: 4194272long lived tree of depth 17 check: 262143time cost 1.9600331783294678 s

簡單編譯之後,性能直接就提升近6倍

相關焦點

  • Python 3.8.0來了!
    【新智元導讀】Python 官網靜悄悄地發布了一則大消息:正式發布 Python 3.8.0! 代表 Python 開發社區和 Python 3.8 發布團隊,我們很高興地宣布 Python 3.8.0 現在已經可以使用。 Python 3.8.0 是 Python 語言的最新正式版,包含許多新功能和優化。 Python 的大多數第三方庫也應該很快就會支持 3.8.0 軟體包。
  • JupyterLab 3.0發布
    日前JupyterLab官方博客發布消息宣布正式發布 JupyterLab3.0,該版本新增加了可視化調試器,目錄,簡單模式UI,多語言支持等大量新功能,並對擴展系統進行了重大改進。今天蟲蟲就帶領大家一起嘗鮮JupyterLab3.0。
  • 代碼跑得慢甩鍋Python?手把手教你如何給代碼提速30%
    其實某個特定程序(無論使用何種程式語言)的運行速度是快還是慢,在很大程度上取決於編寫該程序的開發人員自身素質,以及他們編寫優化而高效代碼的能力。Medium上一位小哥就詳細講了講如何讓python提速30%,以此證明代碼跑得慢不是python的問題,而是代碼本身的問題。
  • 分離硬體和代碼、穩定 API,PyTorch Lightning 1.0.0 版本正式發布
    今日,PyTorch Lightning 在推特宣布,1.0.0 版本現在可用了,並發布新的博客文章詳細描述了 PyTorch Lightning 的運行原理和新的 API。William Falcon 表示自己非常期待有一天,當用戶查看 GitHub 上的複雜項目時,深度學習代碼不再那麼令人望而生畏。
  • 數據科學集成環境JupyterLab發布3.0
    日前JupyterLab官方博客發布消息宣布正式發布 JupyterLab3.0,該版本新增加了可視化調試器,目錄,簡單模式UI,多語言支持等大量新功能,並對擴展系統進行了重大改進。今天蟲蟲就帶領大家一起嘗鮮JupyterLab3.0。
  • 從0開始學python-6.2 用python讀寫文件
    我們還學習了用python來查找、重命名一個文件。這節課,我們一起學習一下怎麼用python操作一個文件的內容。文件操作對一個文件,我們可以1)讀取裡面的內容、2)往文件裡寫內容、3)追加文件內容。我們來看看用python怎麼做這些事情。打開文件在對文件內容操作之前,我們首先要打開文件。
  • 數據分析從業者必看,10 個加速 python 數據分析的簡單的小技巧
    (df)註:在這篇文章發表一周後,Pandas-Profiling 發布了一個升級版本 2.0.0。以下是最新的語法用法:使用要在 Jupyter notebook 中顯示報告,請運行:#Pandas-Profiling 2.0.0df.profile_report()這一行代碼就是在 Jupyter notebook 中顯示數據分析報告所需的全部代碼。
  • Python代碼性能調試和優化
    prec += 2i, lasts, s, fact, num = 0, 0, 1, 1, 1while s !print(exp(Decimal(3000)))最簡單的調試最簡單且實用的調試性能調試的方法是使用Linux的time命令,time可以計算程序執行的時間:time python3 performance.py1.393709580666379697318341937E+655.221469689764143950588763007E
  • 4種方法告訴你!天津0基礎如何學python培訓?
    就是我們的python程式設計師,python可以用來做很多事情,比如:網絡爬蟲、數據分析等。 隨著網際網路的發展,目前行業內也都緊缺python人員,也有越來越多的小夥伴報名開始學習,那麼0基礎我們該怎麼去學習呢?今天誠築說小編來和大家探討一下。
  • aelf Enterprise 1.0.0 Preview 1 版正式發布
    3月27日,aelf Enterprise 1.0.0 Preview 1 版正式發布。aelf Enterprise 1.0.0 preview 1 版是一個整體的區塊鏈商業化解決方案,包含完備的區塊鏈系統、開發套件、開發文檔、以及配套的基礎應用和基礎服務。
  • JupyterLab 3.0發布:支持中文界面,安裝插件無需Node.js
    曉查 發自 凹非寺量子位 報導 | 公眾號 QbitAI原本計劃在2020年底推出的JupyterLab 3.0,在逾期6天後終於正式發布了。作為一次大版本升級,JupyterLab 3.0這次改進頗多,主要增加的功能有:加入中文等多語言界面、新的可視化調試器、改進的簡單界面模式、更清晰的文檔目錄等等。
  • NumSharp v0.6.1 科學計算庫發布,支持標量和隱式轉換
    它是用C#編寫的,符合.netstandard 2.0庫標準。 它的目標是讓.NET開發人員使用NumPy的語法編寫機器學習代碼,從而最大限度地借鑑現有大量在python代碼的轉譯成本。 NumSharp使用最新的Span技術安全高效地訪問內存,優化每個模擬API的性能,確保最底層的NDArray達到最佳性能狀態。NumSharp對於在數組上執行數學和邏輯運算非常有用。
  • PHP 框架 QueryPHP 1.0.3 發布,兼容 PHP 8.0 和 PHP 8.1
    QueryPHP 1.0.3 僅僅做了對 PHP 8.0 和 PHP 8.1 兼容性處理,修復了 PHP 8 下面的代碼和測試用例。
  • 1分鐘變牛人!教你如何使用Python的27萬代碼庫
    Python代碼那麼多,怎麼拿來用你知道嗎?在Python有個巨大的寶庫PyPI,裡面有27萬開源的模塊供大家使用。很多讓你苦思冥想的功能,其他大神早就寫出來了。甚至不要copy粘貼,只要import下就能用了。PyPI是什麼?
  • ICEREST 1.0.1.2 發布,RESTful 路由框架
    ICEREST 1.0.1.2 發布了,ICEREST是一個非常輕量級只有200k左右的RESTful路由框架,通過ICEREST
  • NetworkManager 1.0.0 發布,網絡管理軟體
    在歷盡十年多時間開發之後,Red Hat發起的Linux網絡管理工具NetworkManager正式發布了 1.0.0 版。NetworkManager的首個版本是在2004年11月發布的。
  • JEPaaS 低代碼開發平臺【7.0.1】 發布,這一次,又強大了!
    JEPaaS已於近日正式在開源中國發布,現發布最新升級版本:【7.0.1】 本次【7.0.1】最新升級版本,更新內容如下: JEPAAS-7.0.1 ChangeList根據平臺戰略,開放部分代碼。Next Step 增加國產神通資料庫及PG資料庫支持 優化文檔系統,且可獨立為網盤項目 修復現有系統BugJEPaaS是一款國內實用的低代碼快速開發平臺,11年技術沉澱,百餘人開發團隊不斷維護升級,是國內中大型企業信息化御用平臺。
  • Python學習第129課——醉漢隨機遊走代碼改進
    【每天幾分鐘,從零入門python編程的世界!】上節我們在Python中用代碼實現了醉漢隨機遊走的邏輯和過程,這節我們把上節的代碼改進一下。現在我們的小例子代碼是非常少的,實際開發中,有些項目代碼量會非常大,為了代碼在執行時有更快的速度,那麼就需要對代碼進行改進優化。
  • Python破解反爬蟲:最新反爬蟲有道翻譯中英文互譯破解,附代碼
    python這裡小編今天就給大家發一個最新的破解有道翻譯反爬蟲機制的python代碼,你也可以百度,但百度上目前的所有有道翻譯的爬蟲代碼都已經不能用like Gecko) Chrome/60.0.3112.101 Safari/537.36]' data = {} S = 'fanyideskweb' #反爬蟲機制1 n = content #
  • PaddlePaddle 2.0.0 Beta 發布,API 體系升級,命令式編程完善
    PaddlePaddle 2.0.0 Beta 已經發布,這是飛槳框架v2.0的測試版,最重要的變化為API體系的全面升級以及命令式編程(動態圖)能力的全面完善。