【发布时间】:2021-04-12 05:58:03
【问题描述】:
传递简短命令行选项列表的最快方法是什么?
我从一个列表开始,然后考虑使用一个 numpy 数组,因为据我了解,数组中的项目都是预先输入的,并且更有效地存储在内存中。
是否值得 Cythonizing 函数?是否值得使用 numpy 数组,还是我很可能过早优化?
arg 字符串/列表如下所示:
ARG_STRING = 'cdehinu:'
ARG_LIST = ['credentials',
'delete_user',
'email',
'help',
'ip',
'notifications',
'user_load=']
解析函数的一个最小示例如下所示:
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()
...
我知道,归根结底,这一切都是不必要的,而且我的感觉是,将它转换为数组所花费的时间与在这个小列表中节省的时间一样多,甚至更多,但为了最佳(和/或最快)实践,我很想听听一些更有经验的人对此事的看法,或其他如何优化此过程的想法。
提前致谢。
【问题讨论】:
-
您是否有任何理由认为解析参数会显着延迟您的程序?
-
您是否考虑过只使用现有的参数解析模块?它可能会使您的代码更易于管理,也更易于其他人理解。
-
不是真的 tbh,但它发生在程序中的其他任何事情之前,所以我希望它尽可能优化。
-
@larsks 我没有,谢谢
-
@nihilok 首先发生并不一定意味着它会成为您的性能瓶颈,它可能会更有效地分析您的程序,然后根据您的发现进行优化。
标签: python python-3.x loops parsing optimization