python的程序执行时间,开始和结束

#-*- coding:utf-8 -*-
import datetime
import time

start = time.time()

i = 0;
a = range(1000);
while i < a.__len__():
 print i;
 i = i+1;
 

end = time.time()

print "完成时间: %f s" % (end - start)#

怎么样转换为
%M%S
-分-秒

比如
完成时间:1分20秒

阅读 11.2k
6 个回答

使用 datetime.timedelta

簡單小範例:
 

>>> import datetime

>>> datetime.timedelta(seconds=9999)
datetime.timedelta(0, 9999)

>>> print(datetime.timedelta(seconds=9999))
2:46:39

你的 case 就很簡單的照用:

In [1]: import datetime
In [2]: import time

In [3]: stime = time.time()
In [4]: etime = time.time()
In [5]: etime - stime
Out[5]: 10.781812906265259

In [7]: delta = etime - stime

In [8]: datetime.timedelta(seconds=delta)
Out[8]: datetime.timedelta(0, 10, 781813)

In [12]: print(datetime.timedelta(seconds=delta))
0:00:10.781813

我回答過的問題: Python-QA

这个问题google或者百度一下一大推答案,没必要在这里问。

这个不用转换了吧,直接除就行了:int(end - start) % 60是秒数,int(end - start) / 60是分钟数

估计题主的意思是想time模块那样格式化,but,题主这个只是一个毫秒间隔,不可能用time模块来那样转换的,按照楼上@manong来解决就好了

如果楼主想要获取一个程序的执行时间的话,可以使用IPython的%run,如下所示:

In [1]: cat count.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-


i = 0
a = range(10)
while i < a.__len__():
     print(i)
     i = i + 1

In [2]: run -t count.py
0
1
2
3
4
5
6
7
8
9

IPython CPU timings (estimated):
  User   :       0.00 s.
  System :       0.00 s.
Wall time:       0.00 s.

上面统计了count.py这个文件的运行时间。结果一共给出了三个时间,时钟时间(Wall time),用户CPU时间(User),系统CPU时间(System)。这三个时间含义如下:

  • 时钟时间又称为墙上时钟时间(wall clock time) 。它是进程运行的时间总量,其值与系统
    中同时运行的进程数有关。在我们报告时钟时间时,都是在系统中没有其他活动时进行度量的。

  • 用户CPU时间是执行用户指令所用的时间量。

  • 系统CPU时间是为该进程执行内核所经历的时间。例如,只要一个进程执行一个系统服务,例如read或write,则在内核内执行该服务所花费的时间就计入该进程的系统CPU时间。

关于这三个时间的更多内容请参看《Unix环境高级编程》1.10节。

3611呃old慝好陶

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题