As I am learning Python 3.5 and I wanted to start comparing time on different code.
I have tried the timeit.timeit
module on a couple other simple statements and got it to work.
I can't get it to work on the below code and get the error below:
Traceback (most recent call last):
File "C:\Users\ASUS\Desktop\pythoncode\class_gen.py", line 10, in <module>
print(timeit.timeit(",".join(["#"+i+j for i in listTags for j in listTags if i != j])))
File "C:\Python35\lib\timeit.py", line 213, in timeit
return Timer(stmt, setup, timer, globals).timeit(number)
File "C:\Python35\lib\timeit.py", line 133, in __init__
code = compile(src, dummy_src_name, "exec")
File "<timeit-src>", line 7
_t1 = _timer()
^
IndentationError: expected an indented block"""
The code I am using is:
import itertools
import timeit
listTags = [ "TOT" , "WBA", "BUR", "SOU"]
print(timeit.timeit(",".join(["#" + "".join(t) for t in itertools.permutations(listTags, 2)]))
print(timeit.timeit(",".join(["#"+i+j for i in listTags for j in listTags if i != j])))
I have tried it with and without the number=number
keyword to no avail.
You have to pass a python code as string in the
timeit
call.You were passing the evaluated value of your expression (
#TOTWBA,#TOTBUR,#TOTSOU,#WBATOT,#WBABUR,#WBASOU,#BURTOT,#BURWBA,#BURSOU,#SOUTOT,#SOUWBA,#SOUBUR
) to be executed.Moreover, you have to pass
listTags
literally, or usingsetup
expression, astimeit
runs in a different interpreter: it's not aware of your previously defined variables.I rewrote the first timeit call using single quotes to protect your statement and added a
setup
call to define thelistTags
variable.I get a time as a result:
5.2231671576142285
: it's working