使用Timei调用函数

2024-10-03 11:15:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python来计时一些事情,包括上传到Amazon的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)

Tags: namefromimportawsamazondatas3bucket
2条回答

我知道这在Python社区是异端邪说,但我实际上建议而不是使用timeit,尤其是对于这样的东西。就您的目的而言,我相信它已经足够好了(甚至可能比timeit更好!)如果您只需使用time.time()来计时。换句话说,做些像

from time import time

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

请注意,根据您的平台,您可能希望改为使用time.clock()(请参阅堆栈溢出问题,如this和{a2}),如果您使用的是python3.3,那么由于PEP 418,您将得到{a3}。在

您可以使用命令行界面timeit。在

只不过是一个没有计时的模块。例如:

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

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

^{pr2}$

另请参见:

相关问题 更多 >