Ich bin in ein Chaos mit den Namespaces gestrudelt: Nämlich möchte ich mit dem timeit-Modul einige Messungen machen. Für die Messung brauche ich aber eine Referenz auf ein vorher erzeugtes Objekt. Und es gelingt mir nicht, die Referenz bis in den Code-String für timeit.Timer zu übergeben.
In der Dokumentation steht nur als Beispiel, daß man Namen aus __main__ importieren kann:
Code: Alles auswählen
>>> from timeit import Timer
>>> a = 2.0**.5    # irgendeine Referenz für die Zeitmessung
>>> t = Timer('1.0/a', 'from __main__ import a')   # irgendeine Aktion zum Messen
>>> t.timeit(1)
1.0967254638671875e-05    # funktioniert, wie erwartetCode: Alles auswählen
>>> def timeit_wrapper(ref):
...   print dir()    # um zu sehen, welche Namen hier sind
...   t2 = Timer('1.0/ref', 'from __main__ import ref')
...   return t2.timeit(1)
...   # das ist natürlich Blödsinn, weil's in __main__ keinen Namen "ref" gibt
...
>>> timeit_wrapper(3.14)
['ref']
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "<stdin>", line 4, in timeit_wrapper
  File "/usr/lib/python2.4/timeit.py", line 161, in timeit
    timing = self.inner(it, self.timer)
  File "<timeit-src>", line 3, in inner
ImportError: cannot import name refOder bin ich auf dem Holzweg, und das geht alles ganz einfach?
