1

我正在尝试在 python 中计时几件事,包括上传到亚马逊的 S3 云存储的时间,并且遇到了一些麻烦。我可以计时我的哈希和其他一些事情,但不能上传。我以为这篇文章最终会让我到达那里,但我似乎无法找到救赎。任何帮助,将不胜感激。对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)
4

2 回答 2

2

我知道这在 Python 社区中是异端邪说,但我实际上建议不要使用timeit,尤其是像这样的东西。出于您的目的,我相信如果您只是用来计时,它就足够了(甚至可能比timeit!) 。time.time()换句话说,做类似的事情

from time import time

t0 = time()
myfunc()
t1 = time()
print t1 - t0

请注意,根据您的平台,您可能想尝试一下time.clock()(请参阅 Stack Overflow 问题,例如thisthis),如果您使用的是 Python 3.3,那么由于PEP 418 ,您有更好的选择

于 2013-07-03T21:42:54.603 回答
1

您可以使用命令行界面来timeit.

只需将您的代码保存为没有计时内容的模块即可。例如:

# file: test.py
data = range(5)
def foo(l):
    return sum(l)

然后您可以从命令行运行计时代码,如下所示:

$ python -mtimeit -s 'import test;' 'test.foo(test.data)' 

也可以看看:

于 2013-07-04T17:46:58.983 回答