2010-09-21 18 views
3

Le code suivant fournit mes fonctionnalités nécessaires; mais, prend un peu plus de 10 secondes pour une table qui comprend 200 variables avec 64000 lignes. Existe-t-il un moyen plus efficace de créer un espace de noms de variable correspondant aux noms de colonnes?Le moyen le plus efficace d'extraire la table PyTables avec les colnames enregistrés comme noms de variables

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

Le code sera exécuté dans un environnement d'analyse et représente une grande proportion du temps d'attente pour l'utilisateur final; donc, je voudrais la confirmation que c'est la meilleure façon d'obtenir l'établissement d'un espace de noms basé dynamiquement sur les noms de colonnes PyTable.

+0

Avez-vous chronométré combien de temps 'a = table [:]' prend? La copie de la table peut être la partie qui prend le plus de temps. – unutbu

+0

Quelle est la raison de vouloir des variables de nom de barre comme 'colName' au lieu de référencer les colonnes avec' a ['colName'] '? Je pense que ce dernier conduit à un code plus organisé que le premier. – unutbu

+0

Après avoir chronométré cela, la copie de la table est le temps consommateur - merci! – tnt

Répondre

1

Comme suggéré par unutbu, la copie de table a = table [:] est le consommateur de temps. Le code suggéré fournit sinon l'accès aux variables tablename sans préfixe. Il est reconnu que l'utilisation de cette méthode de simplification de l'espace de noms des variables est discutable car elle peut ne pas se prêter à un code évident.