我正在尝试优化最初使用namedtuples编写的代码和修改它们的函数。 对于相同的namedtuple类型的各种值,每个函数都会被调用很多时间。
基本的例子是:
def modifyTuple(record):
if record.field1 == True:
record.field2 = "VALUE1"
elif record.field3 == "SPECIAL":
record.field2 = "VALUE2"
我正在经历的瓶颈分析,它表明每次调用函数时使用多个字典查找会导致时间浪费。我现在正在尝试使用检查和基本字符串替换来动态重写函数,基于简单列表和从字段名称到字段索引的映射。
def modifyTuple(record):
if record[0] == True:
record[1] = "VALUE1"
elif record[2] == "SPECIAL":
record[3] = "VALUE2"
生成并使用此代码(我有一个函数,在使用exec
进行内部重新定义和编译之后返回修改后的转换函数)。它似乎工作得很好,但是当函数实际上是一个类方法时,我似乎找不到处理这种情况的方法,因此有一个互补的“自我”参数。
应如何处理?有什么想法吗?