簡體   English   中英

在Python中解壓縮字典的性能影響

[英]Performance implications of unpacking dictionaries in Python

我有一段代碼,它接受一系列變量並將它們傳遞給N個模塊。 為了簡化代碼的可讀性,而不是一遍又一遍地傳遞變量,我創建了一個字典並將其解壓縮到模塊,如下所示:

message_package = {
    'v1' : v1,
    'v2' : v2,
    'v3' : v3
}
for mod in mods:
   mod.f1(**message_package)
[...]
if condition:
   mod.f2(**message_package)

然后,每個模塊獲取所需的變量,而忽略其余變量:

def mod1.f1(v1=None,**kwargs):
   do_something()

從可讀性/可用性的角度來看,我覺得這很不錯-變量立即可用,而不必將它們從** kwargs中拉出來,並且如果我將一個變量添加到消息包中,則只需一行,而不必更新所有模塊。

由於我是Python的新手,所以我想知道...這是非常不合Python的嗎? 不斷解壓縮這些字典是否會對性能產生重大影響,或者是否有更好的方法來做到這一點?

感謝以上所有評論。 我遵循martijn的建議,並使用timeit進行了簡單的測試。

使用我的數據得出的結果如下:

>>> timeit.timeit('passdict()',setup=setup,number=1000000)
0.1841774140484631
>>> timeit.timeit('unpack()',setup=setup,number=1000000)
0.43643336702371016
>>>

看起來Cyphase是正確的,只有當我這樣做“ whoooole lot”時,才會出現性能問題-解包速度是通過字典的兩倍,但是在一百萬次迭代中僅花費250毫秒。 對我來說這可以忽略不計,因為我在一個函數中只處理5-10次調用。

暫無
暫無

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

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