I'd like to measure the execution speed of the following code:
def pe1():
l = []
for i in range(1000):
if i%3 == 0 or i%5 == 0:
l.append(i)
print sum(l)
I stored this code under pe1m.py . Now I'd like to test the speed of file with the python interpreter. I did:
import timeit
import pe1m
t = timeit.Timer(stmt = 'pe1m.pe1()')
t.timeit()
but I get:
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/timeit.py", line 195, in timeit
timing = self.inner(it, self.timer)
File "<timeit-src>", line 6, in inner
NameError: global name 'pe1m' is not defined
But I don't have any global variables.
Try this:
t = timeit.Timer(stmt='pe1()', setup='from pe1m import pe1')
timeit.Timer
object doesn't know about the namespace you're calling it in so it can't access the pe1m
module that you imported.
The setup
argument is a statement executed in the context of the timed statement, they share the same namespace so whatever you define there, will be accessible in stmt
.
You can also try this
>>>def pe1():
>>> l = []
>>> for i in range(1000):
>>> if i%3 == 0 or i%5 == 0:
>>> l.append(i)
>>> print(sum(l))
>>>
>>>from timeit import time it
>>>timeit('pe1()',setup="from __main__ import pe1",number=100) # Run 100 times
>>>timeit('pe1()',setup="from __main__ import pe1") # run default times of 1000000
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With