在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

推薦幾個不錯的Python庫

Spinal FPGA ? 來源:Spinal FPGA ? 2023-12-16 11:05 ? 次閱讀

編 者 按

作為一個在數據中心搬磚的邏輯開發,日常不是僅僅簡單的寫寫RTL就可以完事兒的。在數據中心,你可能連板卡都看不到,日常常打交道的,也就是PCIe。作為邏輯版本的生產者,出現問題往往需要自己有詳細的定位手段和方式(沒有誰比設計者更清楚邏輯的功能。專門的軟件人員來做當然沒問題,但增加溝通成本),那么一套自己常用的軟件工具還是非常有必要的。對于這種工具型工具,C就顯得太笨重了,而Python才是首選。


推薦幾個不錯的Python庫

ctypes
作為常與PCIe打交道的人來說,99%的定位方式都是通過寄存器來進行定位信息。在python中自然也可以通過mmap來實現PCIe Bar空間的映射,但有一個問題就是Python下的mmap一次讀或者寫有時往往會產生兩次TLP讀寫。這么高深的問題自然邏輯開發人員是解不了的。那這時候最好的方式就是通過ctypes來實現與C的打通,mmap與寄存器讀寫功能API交給C代碼來做,生成.so后Python通過ctypes來實現調用即可,方便簡潔。

rich

linux環境里,基本上就是一個命令行窗口,那么基本上就是各種打印了。有些時候想基于Python的print自己實現各種功能還是太略顯麻煩了。那么rich庫是一個很好的選擇。

82149f36-9bbc-11ee-8b88-92fbcf53809c.jpg

Rich 是一個 Python 庫,可以為您在終端中提供富文本和精美格式。

Rich 的 API 讓在終端輸出顏色和樣式變得很簡單。此外,Rich 還可以繪制漂亮的表格、進度條、markdown、語法高亮的源代碼以及棧回溯信息(tracebacks)等——開箱即用。 網上關于rich庫的介紹挺多的,這里就不拾人牙慧了。借助rich的豐富功能,可以基于少量的代碼來實現相對比較豐富的功能。

舉個例子,對于設計而言,維護寄存器/文檔的一致性除非代碼用腳本生成的那么其他情況下往往項目做到最后越來越文不對題。在邏輯開發中,我會基于SpinalHDL中的regif來在代碼中進行定義寄存器實現,在其上面基礎上重定義了它文檔生成的代碼,用來能夠生成整個系統的寄存器文檔。日常會輸出一份html寄存器文檔以及一份Json格式寄存器文檔。隨后在做集成工具時會通過命令行參數直接將json文件直接傳給命令行工具,解析后借助rich的table直接能夠一鍵dump所有的寄存器,并精確給到每個寄存器每個比特的注釋說明,這比讀一個寄存器,再去對照寄存器文檔去看什么意思簡直不要方便太多!

當然,借助chatgpt來實現基于rich定義各種顯示功能這種體力勞動更能節省思考和動手能力。

Fire

既然定位是工具類型的,那么我們最終需要的肯定是一個命令行工具CLIs。這里推薦使用Fire這個庫。不為別的,它最簡單,簡單到令人發指!

importfire

defadd(x, y):
returnx + y

defmultiply(x, y):
returnx * y

if__name__ == '__main__':
fire.Fire({
'add': add,
'multiply': multiply,
})


在上面這段代碼里,我們定義的功能函數僅需把函數注冊到Fire里就能自動生成命令行工具:

$ pythonexample.pyadd1020
30
$ pythonexample.pymultiply 1020
200


基本零成本實現一個CLI工具,簡直太香了。

在VSCode中配合autoDocstring - Python Docstring Generator這個插件可以方便的為函數增加注釋,從而在上面生成的命令行中很方便的生成幫助信息

importfire
defadd(x:int, y:int)-> int:
"""add operation

Args:
x (int): data
y (int): data

Returns:
int: sum
"""
returnx + y

defmultiply(x:int, y:int)-> int:
"""multiply operation

Args:
x (int): data
y (int): data

Returns:
int: multiply
"""
returnx*y

defversion()-> str:
"""get version info

Returns:
str: version number
"""
return"1.2.3"

if__name__ == '__main__':
fire.Fire()

運行時:

python3test.py--help
NAME
test.py

SYNOPSIS
test.pyGROUP | COMMAND

GROUPS
GROUP isone of the following:

fire
The Python Fire module.

COMMANDS
COMMAND isone of the following:

add
addoperation

multiply
multiply operation

version
getversioninfo

python3test.pyadd--help

NAME
test.pyadd- addoperation

SYNOPSIS
test.pyaddXY

DESCRIPTION
addoperation

POSITIONAL ARGUMENTS
X
Type: int
data
Y
Type: int
data

NOTES
You can also use flags syntaxforPOSITIONAL ARGUMENTS



白嫖的即視感!

pyinstaller


這種腳本在不同的機器上運行,自然是不希望直接將代碼復制到機器上的,畢竟還要安裝各種依賴包,有時候這些機器往往是不聯網的。那么最簡單的方式就是通過pyinstaller打包成一個可執行文件了。pyinstaller網上資料也比較多,也可以記住chatgpt來獲取如何打包的方式。


比如針對上面的需要帶.so的打包,我們僅需針對python main文件執行一條指令即可:

pyinstaller --onefile --add-binary='./clib/a.so:.' Test.py

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5402

    瀏覽量

    122896
  • Linux
    +關注

    關注

    87

    文章

    11427

    瀏覽量

    212416
  • 數據中心
    +關注

    關注

    16

    文章

    5074

    瀏覽量

    73076
  • python
    +關注

    關注

    56

    文章

    4822

    瀏覽量

    85906

原文標題:數據中心邏輯搬磚要會的——幾個好用的Python庫

文章出處:【微信號:Spinal FPGA,微信公眾號:Spinal FPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    動態封裝成python模塊的方法

    之前的文章 將靜態封裝成 python 模塊中講解了如何將靜態封裝成 python 模塊,靜態封裝相對來說還是有點復雜,今天來介紹下動
    發表于 07-13 15:24 ?809次閱讀

    Python機器學習常用

    Python是一種面向對象的解釋型計算機程序設計語言,具有豐富和強大的,再加上其簡單、易學、速度快、開源免費、可移植性、可擴展性以及面向對象的特點,Python成為2017年最受歡迎的最受
    發表于 03-26 16:29

    2018年受到眾多開發者關注的7個Python

    幾個還不太知名的引起了Python開發者的關注。
    的頭像 發表于 10-02 09:30 ?4959次閱讀

    Python幾個表情包

    今天制作表情包用到的技術還是之前提到的Turtle,可以從之前的文章除了畫佩奇我們還要玩點更高級的,去學習Turtle的常用語法,然后就是PIL,之前通過這篇文章:Python騷操作|用P
    的頭像 發表于 02-11 11:13 ?5363次閱讀

    140種Python標準、第三方和外部工具都有了

    Python標準Python自帶的標準Python標準無需安裝,只需要先通過impor
    的頭像 發表于 08-02 09:24 ?3479次閱讀

    幾個Python繪圖Turtle的范例資料免費下載

    本文檔的主要內容詳細介紹的是幾個Python繪圖Turtle的范例資料免費下載。
    發表于 06-04 08:00 ?0次下載

    幾個常見的Python資料合集免費下載

    對于數值型數據, NumPy數組在存儲和處理數據時要比內置的Python數據結構高效得多。此外,由低級語言(比如C和Fortran ) 編寫的可以直接操作NumPy數組中的數據,無需進行任何數據復制工作。
    發表于 08-06 17:27 ?35次下載
    <b class='flag-5'>幾個</b>常見的<b class='flag-5'>Python</b><b class='flag-5'>庫</b>資料合集免費下載

    ADM1266 Python

    ADM1266 Python
    發表于 03-23 15:47 ?1次下載
    ADM1266 <b class='flag-5'>Python</b><b class='flag-5'>庫</b>

    Python連接Oracle數據

    Python連接Oracle數據(深圳市核達中遠通電源技術股份有限公司招聘)-該文檔為Python連接Oracle數據講解文檔,是一份不錯
    發表于 09-24 17:20 ?6次下載
    <b class='flag-5'>Python</b>連接Oracle數據<b class='flag-5'>庫</b>

    如何安裝常用Python

    Python作為一種流行的編程語言,擁有豐富的第三方資源,這些可以幫助開發者輕松實現各種功能,從數據分析到Web開發,從機器學習到圖像處理,涵蓋了各個領域。在Python的開發過程
    的頭像 發表于 04-14 12:11 ?1376次閱讀

    Python常用的幾個命令介紹

    Python是一種功能強大的編程語言,廣泛用于數據分析、人工智能和Web開發等領域。在使用Python時,需要掌握一些基本的命令,以便更好地管理和運行代碼。下面將介紹Python常用的幾個
    的頭像 發表于 06-21 17:12 ?2636次閱讀

    SQLite數據python的區別

    SQLite數據python的區別 SQLite是一種輕量級關系型數據管理系統,是一個嵌入式的數據引擎。Python是一種高級編程語
    的頭像 發表于 08-28 16:41 ?1061次閱讀

    python有什么用 如何用python創建數據

    python有什么用 如何用python創建數據 Python是一種高級編程語言,可以用于開發各種類型的應用程序和工具。它的廣泛應用使它在編程領域中極為受歡迎。
    的頭像 發表于 08-28 16:41 ?1399次閱讀

    python讀取數據數據 python查詢數據 python數據連接

    python讀取數據數據 python查詢數據 python數據連接
    的頭像 發表于 08-28 17:09 ?2076次閱讀

    如何使用Python和PinPong控制Arduino

    與傳感器和其他物理設備集成的應用程序。如果您已經掌握了Python的基礎知識,那么您可以通過使用Python來控制Arduino來入門。本文目的主要是向您展示如何使用PinPong通過Pyt
    的頭像 發表于 10-13 10:59 ?1304次閱讀
    如何使用<b class='flag-5'>Python</b>和PinPong<b class='flag-5'>庫</b>控制Arduino
    主站蜘蛛池模板: 国产女主播精品大秀系列在线 | 在线亚洲色图 | 特级一级毛片 | 国产一级特黄高清在线大片 | 久久天天丁香婷婷中文字幕 | 日韩三级在线观看视频 | 精品久久免费观看 | 中文字幕亚洲色图 | 国产午夜精品理论片 | 亚洲一级视频在线观看 | 成人三级在线播放线观看 | youjizz国产| 国产h视频在线观看高清 | 欧美区在线播放 | 中文字幕欧美成人免费 | 99国产精品农村一级毛片 | 色偷偷.com| 天堂网站| 天天摸夜夜操 | 速度与激情一 | 色视频在线免费看 | 日本成人小视频 | 四虎现在的网址入口 | 成人在线一区二区 | 91精品啪在线观看国产日本 | 亚洲香蕉电影 | 亚洲影视久久 | 干成人网 | 天天干狠狠 | 男人的天堂视频在线 | 国产精品午夜久久久久久99热 | 久久99精品久久久久久牛牛影视 | 午夜想想爱午夜剧场 | 奇米影视奇米色777欧美 | 性欧美高清极品猛交 | 日日摸人人拍人人澡 | 午夜视频在线观看免费观看在线观看 | 午夜爱爱毛片xxxx视频免费看 | 天天操天天摸天天干 | 美女拍拍拍免费视频观看 | 久久免费精品 |