First, never use the time module to time functions. It can easily lead to wrong conclusions. See timeit versus timing decorator for an example.
The easiest way to time a function call is to use IPython's %timeit command.
There, you simply start an interactive IPython session, call phase2()
, define queries
,
and then run
%timeit raw_queries(queries,nlp)
The second easiest way that I know to use timeit is to call it from the command-line:
python -mtimeit -s"import test; queries=test.phase2()" "test.raw_queries(queries)"
(In the command above, I assume the script is called test.py
)
The idiom here is
python -mtimeit -s"SETUP_COMMANDS" "COMMAND_TO_BE_TIMED"
To be able to pass queries
to the raw_queries
function call, you have to define the queries
variable. In the code you posted queries
is defined in phase2()
, but only locally. So to setup queries
as a global variable, you need to do something like have phase2
return queries
:
def phase2():
...
return queries
If you don't want to mess up phase2
this way, create a dummy function:
def phase3():
# Do stuff like phase2() but return queries
return queries
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…