Я пытаюсь оптимизировать некоторый код Python. Профилировщик говорит мне, что _get_col () SQLAlchemy - это то, что убивает производительность. Код выглядит примерно так:
lots_of_rows = get_lots_of_rows()
for row in lots_of_rows:
if row.x == row.y:
print row.z
Я собирался пройтись по коду и сделать его более похожим на это ...
lots_of_rows = get_lots_of_rows()
for row in lots_of_rows:
if row[0] == row[1]:
print row[2]
... но я нашел некоторую документацию, которая, кажется, указывает на то, что при доступе к объектам строк, таким как массивы, вы все еще тянете ключи словаря. Другими словами, объект строки выглядит так:
'x': (x object)
'0': (x object)
'y': (y object)
'1': (y object)
'z': (z object)
'2': (z object)
Если это так, я сомневаюсь, что у меня будет какое-либо улучшение производительности при доступе к столбцам по номеру, а не по имени. Есть ли способ заставить SA возвращать результаты в виде списка кортежей или списка списков, а не списка словарей? С другой стороны, кто-нибудь может предложить какие-либо другие оптимизации?