gpt4 book ai didi

python - 基于大键的字典与具有属性的对象列表的性能

转载 作者:行者123 更新时间:2023-11-28 20:50:39 24 4
gpt4 key购买 nike

我正在使用具有几个属性的 Python 对象来组织数据模型,但我想知道这是否比使用基于键的字典效率低。我的模型存储 MP3 标签数据,看起来是这样的:

class Mp3Model:
def __init__(self, path, filename):
self.path = path
self.filename = filename
self.artist = ''
self.title = ''
self.album = ''
self.tracknumber = ''
self.genre = ''
self.date = ''

模型是这样使用的:

mp3s = []
for file in files:
if os.path.splitext(file)[1] == '.mp3':
# Append a new Mp3Model to the mp3s list for each file found
mp3s.append(Mp3Model(os.path.join(self.dir, file), file))

使用基于键的字典,甚至是一个简单的列表是否会提供很大的性能提升? mps[] 对象列表的长度变化很大,具体取决于在给定目录中找到的文件数量,当我扫描包含大量文件的目录时,程序可能会变慢(我还没有实现任何线程) .

最佳答案

除非你声明__slots__对于您的对象,对象属性无论如何都存储在底层 dict 中,因此使用 dict 会比对象快一点。但是,与您的其余代码相比,差异可以忽略不计。

数据结构的选择应取决于各种其他因素:

  • 是否需要存储结果?
  • 您如何访问数据?串行访问还是随机访问?
  • 您将根据哪些关键字搜索数据?
  • 如果您打算并行化您的任务,它能处理并发写入吗?锁定开销是多少?
  • ...

针对您的用例进行优化会带来更高的返回。

关于python - 基于大键的字典与具有属性的对象列表的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11990353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com