真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

函數(shù)運行時間python的簡單介紹

Python如何獲得程序運行時間的格式化顯示

(1)在程序啟動時獲得當前時間:

站在用戶的角度思考問題,與客戶深入溝通,找到紫云網(wǎng)站設計與紫云網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設計、成都網(wǎng)站制作、外貿網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、國際域名空間、虛擬主機、企業(yè)郵箱。業(yè)務覆蓋紫云地區(qū)。

recordTime = time.time()

(2)同時獲得當前時間的格式化串:

startTime = time.strftime("%H%M%S")

(3)在主循環(huán)中按秒進行判斷:

timeGap = time.time() - recordTime

if timeGap = 1: #這是按1秒設置的,可以根據(jù)實際需要設置

recordTime += timeGap

showTime_String = get_lapseTime(startTime, time.strftime("%H%M%S"))

(4)函數(shù):

def get_lapseTime(aTime, bTime):

aNum = 3600 * int(aTime[:2]) + 60 * int(aTime[2:4]) + int(aTime[-2:])

bNum = 3600 * int(bTime[:2]) + 60 * int(bTime[2:4]) + int(bTime[-2:])

gapH = (bNum - aNum) // 3600

gapM = ((bNum - aNum) % 3600) // 60

gapS = ((bNum - aNum) % 3600) % 60

gapTime = "%02d:%02d:%02d"%(gapH,gapM,gapS)

return(gapTime)

在python里用time.time判斷函數(shù)的執(zhí)行時間靠譜嗎

使用time.time來統(tǒng)計函數(shù)的執(zhí)行時間,程序只會執(zhí)行一次,存在很大的隨機因素。

timtit包就可以重復執(zhí)行函數(shù)多次,然后將多次執(zhí)行結果取平均值。相比起來更優(yōu)。

然而程序執(zhí)行時間很大程度還受計算機性能的影響,衡量程序好壞更靠譜的手段是計算時間復雜度。

7種檢測Python程序運行時間、CPU和內存占用的方法

1. 使用裝飾器來衡量函數(shù)執(zhí)行時間

有一個簡單方法,那就是定義一個裝飾器來測量函數(shù)的執(zhí)行時間,并輸出結果:

import time

from functoolsimport wraps

import random

def fn_timer(function):

@wraps(function)

def function_timer(*args, **kwargs):

? t0= time.time()

? result= function(*args, **kwargs)

? t1= time.time()

? print("Total time running %s: %s seconds" %

? ? ? (function.__name__, str(t1- t0))

)

? return result

return function_timer

@fn_timer

def random_sort(n):

return sorted([random.random() for i in range(n)])

if __name__== "__main__":

random_sort(2000000)

輸出:Total time running random_sort: 0.6598007678985596 seconds

使用方式的話,就是在要監(jiān)控的函數(shù)定義上面加上 @fn_timer 就行了

或者

# 可監(jiān)控程序運行時間

import time

import random

def clock(func):

def wrapper(*args, **kwargs):

? ? start_time= time.time()

? ? result= func(*args, **kwargs)

? ? end_time= time.time()

? ? print("共耗時: %s秒" % round(end_time- start_time, 5))

? ? return result

return wrapper

@clock

def random_sort(n):

return sorted([random.random() for i in range(n)])

if __name__== "__main__":

random_sort(2000000)

輸出結果:共耗時: 0.65634秒

2. 使用timeit模塊

另一種方法是使用timeit模塊,用來計算平均時間消耗。

執(zhí)行下面的腳本可以運行該模塊。

這里的timing_functions是Python腳本文件名稱。

在輸出的末尾,可以看到以下結果:4?loops, best of?5:?2.08?sec per loop

這表示測試了4次,平均每次測試重復5次,最好的測試結果是2.08秒。

如果不指定測試或重復次數(shù),默認值為10次測試,每次重復5次。

3. 使用Unix系統(tǒng)中的time命令

然而,裝飾器和timeit都是基于Python的。在外部環(huán)境測試Python時,unix time實用工具就非常有用。

運行time實用工具:

輸出結果為:

Total?time running random_sort:?1.3931210041?seconds

real?1.49

user?1.40

sys?0.08

第一行來自預定義的裝飾器,其他三行為:

real表示的是執(zhí)行腳本的總時間

user表示的是執(zhí)行腳本消耗的CPU時間。

sys表示的是執(zhí)行內核函數(shù)消耗的時間。

注意:根據(jù)維基百科的定義,內核是一個計算機程序,用來管理軟件的輸入輸出,并將其翻譯成CPU和其他計算機中的電子設備能夠執(zhí)行的數(shù)據(jù)處理指令。

因此,Real執(zhí)行時間和User+Sys執(zhí)行時間的差就是消耗在輸入/輸出和系統(tǒng)執(zhí)行其他任務時消耗的時間。

4. 使用cProfile模塊

5. 使用line_profiler模塊

6. 使用memory_profiler模塊

7. 使用guppy包

python 打印出函數(shù)執(zhí)行所用時間

使用timeit模塊,先介紹下:

timeit 模塊

timeit?模塊定義了接受兩個參數(shù)的?Timer?類。兩個參數(shù)都是字符串。 第一個參數(shù)是你要計時的語句或者函數(shù)。 傳遞給?Timer?的第二個參數(shù)是為第一個參數(shù)語句構建環(huán)境的導入語句。 從內部講,?timeit?構建起一個獨立的虛擬環(huán)境, 手工地執(zhí)行建立語句,然后手工地編譯和執(zhí)行被計時語句。

一旦有了?Timer?對象,最簡單的事就是調用?timeit(),它接受一個參數(shù)為每個測試中調用被計時語句的次數(shù),默認為一百萬次;返回所耗費的秒數(shù)。

Timer?對象的另一個主要方法是?repeat(), 它接受兩個可選參數(shù)。 第一個參數(shù)是重復整個測試的次數(shù),第二個參數(shù)是每個測試中調用被計時語句的次數(shù)。 兩個參數(shù)都是可選的,它們的默認值分別是?3?和?1000000。?repeat()?方法返回以秒記錄的每個測試循環(huán)的耗時列表。Python?有一個方便的?min?函數(shù)可以把輸入的列表返回成最小值,如: 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)


本文題目:函數(shù)運行時間python的簡單介紹
轉載來于:http://weahome.cn/article/hcpods.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部