Самый эффективный способ извлечь таблицу PyTables с сохраненными именами столбцов в качестве имен переменных.

Следующий код обеспечивает необходимую мне функциональность; но для таблицы, содержащей 200 переменных и 64000 строк, требуется чуть больше 10 секунд. Есть ли более эффективный способ создать пространство имен переменных, соответствующее именам столбцов?

strExec = "a = table[:]"  
for colobj in table.description._f_walk(type="Col"):  
    colName = colobj._v_pathname  
    strExec = strExec + '\n' + colName + " = a['" + colName + "']"  
exec(strExec)  

Код будет выполняться в среде анализа и представляет большую часть времени ожидания для конечного пользователя; поэтому я хотел бы подтвердить, что это лучший способ добиться динамического создания пространства имен на основе имен столбцов PyTable.


person tnt    schedule 21.09.2010    source источник
comment
Вы засекли, сколько времени занимает a=table[:]? Копирование таблицы может быть наиболее трудоемкой частью.   -  person unutbu    schedule 22.09.2010
comment
В чем причина необходимости использовать переменные barename, такие как colName, вместо ссылки на столбцы с помощью a['colName']? Я думаю, что последнее приводит к более организованному коду, чем первое.   -  person unutbu    schedule 22.09.2010
comment
После этого времени копирование таблицы является потребителем времени - спасибо!   -  person tnt    schedule 22.09.2010
comment
Я думаю, что понимаю вашу точку зрения на более явное использование ['colName']. Мой пользователь будет интенсивно писать сценарии с набором переменных, и я хотел предоставить пространство имен только с пустым именем, чтобы облегчить его бремя. Хороший отзыв по обоим пунктам.   -  person tnt    schedule 22.09.2010


Ответы (1)


Как было предложено unutbu, копия таблицы a=table[:] является потребителем времени. В противном случае предлагаемый код обеспечивает доступ к переменным имени таблицы без префикса. Признано, что использование этого метода упрощения пространства имен переменных сомнительно, поскольку он может не поддаваться самоочевидному коду.

person tnt    schedule 29.11.2010