Python 2.7 Python 2.7添加到dict的速度太慢
我正在编写Python脚本。它从文件中获取关于订阅者流量的信息,并将其放在特殊的结构中。它是有效的。但是它工作得太慢了。我用PHP编写了相同的算法,它的运行速度要快得多。我注意到Python花了很多时间将数据放入dict中。PHP脚本花了6秒处理我的测试文件,而Python脚本花了12秒(从文件中获取数据大约7秒,填充结构大约5秒)。 我的结构如下所示:struct[subscriberId][protocolId]=octents 我使用下面的函数来填充它们:Python 2.7 Python 2.7添加到dict的速度太慢,python-2.7,dictionary,Python 2.7,Dictionary,我正在编写Python脚本。它从文件中获取关于订阅者流量的信息,并将其放在特殊的结构中。它是有效的。但是它工作得太慢了。我用PHP编写了相同的算法,它的运行速度要快得多。我注意到Python花了很多时间将数据放入dict中。PHP脚本花了6秒处理我的测试文件,而Python脚本花了12秒(从文件中获取数据大约7秒,填充结构大约5秒)。 我的结构如下所示:struct[subscriberId][protocolId]=octents 我使用下面的函数来填充它们: def addBytesToSt
def addBytesToStatStruct(struct, subscriberId, protocolId, octents):
if subscriberId in struct:
if protocolId in struct[subscriberId]:
struct[subscriberId][protocolId] += octents
return
else:
struct[subscriberId][protocolId] = octents
return
else:
struct[subscriberId] = {protocolId : octents}
我可能做错什么了吗?我想我的问题出现是因为加法过程中发生了碰撞。据我所知,PHP使用链接,而Python使用开放寻址。您能给我一个提示吗?我如何使Python dict更快?您可以尝试使用。不确定这是否会大大加快您的代码速度(不过应该会有一点加快)…非常感谢您的回答!我试过collections.defaultdict和collections.OrderedDict。不幸的是,这并没有使我的脚本速度明显加快。