我正在尝试在python中计算一些时间,包括上传时间到亚马逊的S3云存储,并且遇到了一些麻烦。我可以计算我的哈希值和其他一些东西,但不能上传。我以为this帖子最后会把我带到那里,但我似乎无法找到救恩。任何帮助,将不胜感激。非常新的python,谢谢!
import timeit
accKey = r"xxxxxxxxxxx";
secKey = r"yyyyyyyyyyyyyyyyyyyyyyyyy";
bucket_name = 'sweet_data'
c = boto.connect_s3(accKey, secKey)
b = c.get_bucket(bucket_name);
k = Key(b);
p = '/my/aws.path'
f = 'C:\\my.file'
def upload_data(p, f):
k.key = p
k.set_contents_from_filename(f)
return
t = timeit.Timer(lambda: upload_data(p, f), "from aws_lib import upload_data; p=%r; f = %r" % (p,f))
# Just calling the function works fine
#upload_data(p, f)
答案 0 :(得分:1)
我知道这在Python社区中是异端,但我实际上建议使用而不是来使用timeit
,尤其是对于这样的事情。出于您的目的,我相信如果您只是使用timeit
来计算时间,它就足够了(甚至可能比time.time()
更好!)。换句话说,做一些像
from time import time
t0 = time()
myfunc()
t1 = time()
print t1 - t0
请注意,根据您的平台,您可能需要尝试time.clock()
(请参阅堆栈溢出问题,例如this和this),如果您使用的是Python 3.3,由于better options,你有PEP 418。
答案 1 :(得分:1)
您可以使用命令行界面timeit
。
只需将代码保存为模块,而无需计时。例如:
# file: test.py
data = range(5)
def foo(l):
return sum(l)
然后您可以从命令行运行计时代码,如下所示:
$ python -mtimeit -s 'import test;' 'test.foo(test.data)'
另见: