资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

关于python耗时函数的信息

python中from time import sleep是什么意思

from time import sleep就是从time模块中引入sleep函数,使用sleep函数可以让程序休眠(推迟调用线程的运行)。

创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的容县网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

具体方法:

1,sleep(时间)。

2,#如果之前引入了time模块,使用time.sleep(时间)语句即可,不需要import这个语句。

3,#具体用法见下其中“时间”以秒为单位,可以是小数,0.1秒则代表休眠100毫秒。

扩展资料:

使用Python编程时的注意事项:

1,初始变化量:

在Python里,一个表达式中的名字在它被赋值之前是没法使用的。这是有意而为的:这样能避免一些输入失误,同时也能避免默认究竟应该是什么类型的问题(0,None,””,[],?)。记住把计数器初始化为0,列表初始化为[],以此类推。

2,从第一列开始:

确保把顶层的,未嵌套的代码放在最左边第一列开始。这包括在模块文件中未嵌套的代码,以及在交互提示符中未嵌套的代码。Python使用缩进的办法来区分嵌套的代码段,因此在代码左边的空格意味着嵌套的代码块。除了缩进以外,空格通常是被忽略掉的。

3,缩进一致:

在同一个代码块中避免讲tab和空格混用来缩进,除非知道运行自己的代码的系统是怎么处理tab的。否则的话,在自己的编辑器里看起来是tab的缩进也许Python看起来就会被视作是一些空格。保险起见,在每个代码块中全都是用tab或者全都是用空格来缩进;用多少由自己决定。

4,在函数调用时使用括号:

无论一个函数是否需要参数,必须要加一对括号来调用它。即,使用function(),而不是function。Python的函数简单来说是具有特殊功能的对象,而调用是用括号来触发的。像所有的对象一样,它们也可以被赋值给变量,并且间接的使用它们:x=function:x()。

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/env python

def test1():

n=0

for i in range(101):

n+=i

return n

def test2():

return sum(range(101))

def test3():

return sum(x for x in range(101))

if __name__=='__main__':

from timeit import Timer

t1=Timer("test1()","from __main__ import test1")

t2=Timer("test2()","from __main__ import test2")

t3=Timer("test3()","from __main__ import test3")

print t1.timeit(1000000)

print t2.timeit(1000000)

print t3.timeit(1000000)

print t1.repeat(3,1000000)

print t2.repeat(3,1000000)

print t3.repeat(3,1000000)

找出python程序中运行时最耗时间的部分

那就是profile和cProfile模块:

import cProfile

cProfile.run('function....')

另外,time模块,在不同的函数的开头和结尾分别计时,然后将两个时间相减,就可以获得这段函数的运行时间了,然后在看哪段函数占的时间比较大:

import time

t1=time.time()

##you function segment here

t2=time.time()

timediff=t2-t1

python内置数据类型列表list和字典dict的性能

我们来讨论下python的两种最重要的内置数据类型列表list和字典dict上,各种操作的复杂度。

list列表数据类型常用操作性能:

1、按索引取值和赋值(v=a[i],a[i]=v)

由于列表的随机访问特性,这两个操作执行时间与列表大小无关,均为O(1)

2、列表的曾长,可以选择append()和_add_() "+"

list.append(v)的执行时间O(1)

list = list + [v],执行时间是O(n+k),因为新增了一个新的列表,其中k是被加的列表长度

举例:4种生成前n个整数列表的方法

如图:

我们可以计算一下这四个函数的耗时,如下

执行结果:

我们可以看到,4种方法运行时间差别很大,test1使用列表连接最慢,而test4使用list range最快,速度相差近200倍。

如下图,我们总结下list基本操作的性能如何:

上图可知pop()从列表末尾移除元素O(1),但是pop(i)从列表中间移除元素要O(n),为什么呢?

因为从中部移除元素,要把移除元素后面的元素全部向前挪一位,才保证了列表按索引取值和赋值很快,达到O(1)。

dict数据类型:

字典和列表不同,dict根据key找到value,而list根据index。

字典最常用的取值get和赋值set,其性能为O(1),而contain(in)操作判断字典是否存在某个key,其性能也是O(1)

list和dict的in操作对比:

设计一个性能试验,验证list中检索一个值,对比dict中检索一个值的耗时对比。如下程序:

如果如下:

可见list的in操作复杂度为O(n)

PS:大家可以去python官方的算法复杂度网站看看:


分享名称:关于python耗时函数的信息
分享链接:http://cdkjz.cn/article/doecccs.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220