python时间语句
A. python某段代码执行时间过长,如何跳过执行下一步
urllib2.urlopen 函数有设置超时的参数timeout, 可以设置超时
urllib2.urlopen("http://www..com", timeout=5)
五秒内, 没有相应, 就继续向下执行了
B. python 打印出函数执行所用时间
使用timeit模块,先介绍下:
timeit 模块
timeit模块定义了接受两个参数的Timer类。两个参数都是字符串。 第一个参数是你要计时的语句或者函数。 传递给Timer的第二个参数是为第一个参数语句构建环境的导入语句。 从内部讲,timeit构建起一个独立的虚拟环境, 手工地执行建立语句,然后手工地编译和执行被计时语句。
一旦有了Timer对象,最简单的事就是调用timeit(),它接受一个参数为每个测试中调用被计时语句的次数,默认为一百万次;返回所耗费的秒数。
Timer对象的另一个主要方法是repeat(), 它接受两个可选参数。 第一个参数是重复整个测试的次数,第二个参数是每个测试中调用被计时语句的次数。 两个参数都是可选的,它们的默认值分别是3和1000000。repeat()方法返回以秒记录的每个测试循环的耗时列表。Python有一个方便的min函数可以把输入的列表返回成最小值,如: min(t.repeat(3, 1000000))
你可以在命令行使用timeit模块来测试一个已存在的Python程序,而不需要修改代码。
再给你个例子,你就知道怎么做了。
#-*-coding:utf-8-*-
#!/bin/envpython
deftest1():
n=0
foriinrange(101):
n+=i
returnn
deftest2():
returnsum(range(101))
deftest3():
returnsum(xforxinrange(101))
if__name__=='__main__':
fromtimeitimportTimer
t1=Timer("test1()","from__main__importtest1")
t2=Timer("test2()","from__main__importtest2")
t3=Timer("test3()","from__main__importtest3")
printt1.timeit(1000000)
printt2.timeit(1000000)
printt3.timeit(1000000)
printt1.repeat(3,1000000)
printt2.repeat(3,1000000)
printt3.repeat(3,1000000)
C. python 时间复杂度
Hey de! 判断时间复杂度跟核心语句的执行频次有密切关系,执行频次越多时间复杂度越高。第三个循环的核心语句是:
x = x*2
假设我们设它的执行频次为f(n),根据题意我们能够得到这种规律,执行1次x=2,2次x=4,所以该核心语句的执行次数f(n)应该满足: 2^{f(n)} < n, 得出f(n)< log_{2}(n),更多关于时间复杂度的知识可参考这篇博文:
http://blog.csdn.net/zolalad/article/details/11848739?readlog
D. python用for语句打印10月份自然日期
import calendar
cal = calendar.month(2017, 10)
print ("以森早下输出2017年10月份的日历:")
print (cal)
输出如下:
以下此亩雀耐瞎输出2017年10月份的日历:
October 2017
Mo Tu We Th Fr Sa Su
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
***Repl Closed***
E. python时间戳问题
dt不能是字符串 要用datetime格式的就对了
timetuple() 是时间偏移量 这里的hours=8 就是增加8小时
*1000000000 时间是浮点数 这个就是为了把这个数换算成整数用的