我正在使用 timeit 函数在我编写的两种方法上运行一些指标,但遇到了一个问题。请参阅下面的简化示例文件:
fileA.py,这是独立运行的,我正在尝试使用 timeit 测试函数 foo:
if (len(sys.argv) < 2):
print "Need a command line argument, exiting"
sys.exit(1)
def foo(n):
#does some stuff, returns an int
这个函数可以独立运行,我可以运行它./fileA.py 5
我有一个类似的文件,fileB.py
它是 foo 的不同实现,但除了 foo 的内部之外完全相同。
现在我有一个fileC,我试图在fileA和fileB上使用timeit(省略fileB部分):
for n in range(0,10):
setupStr = 'from fileA import foo'
setupStr += '; from __main__ import n'
mytime = timeit.Timer('foo(n)', setupStr)
timeTaken = mytime.timeit(1)
print #results, not important
我遇到的问题是,当我运行 fileC.py 时,我得到“需要命令行参数,退出”并退出。我知道这是来自 fileA.py,但是为什么这部分代码正在运行呢?我的印象是 timeit 的工作方式,我只是从 fileA 导入 foo。我假设错了吗?如果是这样,纠正此问题的最佳方法是什么,以便我可以测试该方法foo(n)
并保持 fileA 使用所需的命令行参数独立运行的能力?