time模块的两个函数time.clock()和time.time()的区别

在统计python代码 执行速度时要使用到time包,在查找相关函数时有time.time()time.clock()两个函数可供选择。而两者是有区别的:

  • cpu 的运行机制:cpu是多任务的,例如在多进程的执行过程中,一段时间内会有对各进程被处理。一个进程从从开始到结束其实是在这期间的一些列时间片断上断断续续执行的。所以这就引出了程序执行的cpu时间(该程序单纯在cpu上运行所需时间)和墙上时钟wall time。
  • time.time()是统计的wall time(即墙上时钟),也就是系统时钟的时间戳(1970纪元后经过的浮点秒数)。所以两次调用的时间差即为系统经过的总时间。
  • time.clock()是统计cpu时间 的工具,这在统计某一程序或函数的执行速度最为合适。两次调用time.clock()函数的插值即为程序运行的cpu时间。
    自己跑了下例子
#!/usr/bin/python
# -*- coding: UTF-8 -*-
if __name__ == '__main__':
    import time
    start1 = time.clock()
    start2 = time.time()
    for i in range(10000):
        print (i)
    end1 = time.clock()
    end2 = time.time()
    print ('wall time is different is %6.3f' % (end1 - start1))
    print ('CPU time is different is %6.3f' % (end2 - start2))

wall time is different is 3.593
CPU time is different is 3.594

原文地址:https://www.cnblogs.com/lovely-bones/p/11670984.html

时间: 2024-11-13 08:04:26

time模块的两个函数time.clock()和time.time()的区别的相关文章

Python 3.X 调用多线程C模块,并在C模块中回调python函数的示例

由于最近在做一个C++面向Python的API封装项目,因此需要用到C扩展Python的相关知识.在此进行简要的总结. 此篇示例分为三部分.第一部分展示了如何用C在Windows中进行多线程编程:第二部分将第一部分的示例进行扩展,展示了如何在python中调用多线程的C模块:第三部分扩展了第二部分,增加了在C模块的线程中回调python的演示. 本文所用的环境为:64位Win7 + python 3.4 x86 + vs2010 一.windows下的C语言多线程程序 windows下多线程编程

python-多线程:调用thread模块中的start_new_thread()函数来产生新线程

Python 多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 程序的运行速度可能加快 在一些等待的任务实现上如用户输入.文件读写和网络收发数据等,线程就比较有用了.在这种情况下我们可以释放一些珍贵的资源如内存占用等等. 线程在执行过程中与进程还是有区别的.每个独立的线程有一个程序运行的入口.顺序执行序列和程序的出口.

嵌入Python | 调用Python模块中有参数的函数

开发环境Python版本:3.6.4 (32-bit)编辑器:Visual Studio CodeC++环境:Visual Studio 2013 需求说明前一篇<在C++中嵌入Python|调用无参数的函数>中我们成功的在C++主程序中嵌入了Python,并且调用了Python模块中的一个无参数的函数.这一篇我们将在此基础上,实现在主程序中调用Python模块中有参数的函数,使两者互动起来. 0 准备say_hi.py模块 在say_hi.py中增加含有一个参数的函数prt_hello和含有

re模块中常用功能函数

re模块中常用功能函数 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数. re.match函数

Python中datetime模块中strftime/strptime函数

python中datetime模块非常好用,提供了日期格式和字符串格式相互转化的函数strftime/strptime 1.由日期格式转化为字符串格式的函数为: datetime.datetime.strftime() 2.由字符串格式转化为日期格式的函数为: datetime.datetime.strptime() 3.两个函数都涉及日期时间的格式化字符串,列举如下: %a 星期几的简写;如 星期三为Web %A 星期几的全称;如 星期三为Wednesday %b 月份的简写; 如4月份为Ap

如何快速的获得url地址中参数名和参数值(在看PHP手册的时候无意间看见这两个函数,猜想能不能搭配使用。)

今天在看手册的时候,无意间看到这两个内置函数parse_url和parse_str.看到他们的用法后,我突然想到能不能利用这两个函数来获得url地址中的参数.为了验证我的猜想,我就以如下url为例子:https://www.baidu.com/baidu?wd=百度&tn=monline_4_dg&ie=utf-8 代码如下: $url = 'https://www.baidu.com/baidu?wd=百度&tn=monline_4_dg&ie=utf-8'; $url_

Functions类,一个Javascript的函数加法类,将两个函数加起来,顺序执行

以下是类的代码: 1 var Functions = { 2 oFunctions: null, 3 add: function (oFunc, oNewFunc) { 4 var oNew = function () { 5 oFunc(); 6 oNewFunc(); 7 }; 8 return oNew; 9 } 10 }; 以下是测试代码: 1 function one() { 2 alert(1); 3 } 4 5 function two() { 6 alert(2); 7 } 8

【OC学习-8】存取器方法?getter和setter?事实上就是赋值和返回值的两种函数

我们在声明类的时候,有实例变量+方法(函数),这些实例变量假设默认的话都是protected类型,一般无法直接訪问.更别提赋值和调用了,所以就产生了两种函数,getter函数就是可以返回实例变量的值,setter函数就是可以设置实例变量的值.(当然假设你把实例变量改成public的话可以直接调用,但不安全) 存取器方法(函数)就是:存--赋值setter函数.取--返回值getter函数. (1)先在类的.h文件中面声明这个函数(方法).一般都有默认的格式(例如以下):返回值函数的函数名字一般都

两个函数

编写两个函数,其功能分别是: ① 求N个整数的次大值和次小值. ② 求两个整数的最大公约数和最小公倍数. #include<iostream> using namespace std; void main() { int secondlarge, secondsmall; int *p1; int *p2; int n; cout<<"输入数目的个数"<<endl; cin>>n; p1=new int [n]; p2=new int[n