簡體   English   中英

在 Python 中解析 arguments 的最快方法是什么?

[英]What's the fastest way to parse arguments in Python?

傳遞簡短命令行選項列表的最快方法是什么?

我從一個列表開始,然后考慮使用 numpy 數組,因為據我了解,數組中的項目都是預先輸入的,並且更有效地存儲在 memory 中。

是否值得對 function 進行 Cythonizing? 甚至值得使用 numpy 陣列,還是我很可能過早優化?

arg 字符串/列表如下所示:

ARG_STRING = 'cdehinu:'
ARG_LIST = ['credentials',
            'delete_user',
            'email',
            'help',
            'ip',
            'notifications',
            'user_load=']

解析 function 的最小示例如下所示:

def arg_parse(self, opts):

    for opt, arg in np.array(opts):     # here I have added the numpy conversion
        if opt in {'-i', '--ip'}:
            do.something()
        elif opt in {-h, '--help}:
            do.something_else()
        ...

我知道歸根結底,這一切都是不必要的,而且我的感覺是,將其轉換為數組所花費的時間與在這個小列表中節省的時間一樣多(如果不是更多的話),但為了最好的(和/ 或最快)的做法,我很想聽聽一些更有經驗的人對此事的看法,或其他如何優化此過程的想法。

提前致謝。

參數解析在典型應用程序中只發生一次。 除非應用程序是微不足道的,否則參數解析不太可能對執行時間產生任何明顯影響,如果它是“命令行選項的簡短列表”,則更少。

在參數解析中應該優化的是可用性 這包括遵守通常的命令行約定以及提供良好且易於訪問的文檔以及對參數正確性的全面驗證。

已建立的參數解析庫傾向於關注這些目標,有時甚至會以略微增加運行時間為代價。 但是每次調用所產生的幾微秒將在第一次使用良好消息時得到充分回報,從而節省了調試 session 的冗長且令人沮喪的腳本。

在 Python 程序的情況下,最大的啟動成本是初始化執行環境,特別是搜索導入的模塊。 這些可能遠遠超過例如argparse的執行時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM