成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

計算函數執行時長的方法

開發 后端
Python開發,有時需要做性能分析及性能優化,這時就需要記錄一些耗時函數執行時間問題,然后針對函數邏輯進行優化。

python開發,有時需要做性能分析及性能優化,這時就需要記錄一些耗時函數執行時間問題,然后針對函數邏輯進行優化。

在python3中一般都有哪些方法呢。

1、使用time.time()

這種方法較簡單,但如果想更精確的計算函數的執行時間,會產生精度缺失,沒辦法統計時間極短的函數耗時。

import time

def func():
time.sleep(1)

t = time.time()
func()
print(f'耗時:{time.time() - t:.4f}s')

耗時:1.0050s

2、使用time.perf_counter()

perf_counter是在python3.3新添加的,返回性能計數器的值,返回值是浮點型,統計結果包括睡眠的時間,單個函數的返回值無意義,只有多次運行取差值的結果才是有效的函數執行時間。

import time
def func():
print('hello world')
t = time.perf_counter()
func()
print(f'耗時:{time.perf_counter() - t:.8f}s')
hello world
耗時:0.00051790s

3、使用timeit.timeit ()

timeit()函數有5個參數:
stmt 參數是需要執行的語句,默認為 pass
setup 參數是用來執行初始化代碼或構建環境的語句,默認為 pass
timer 是計時器,默認是 perf_counter()
number 是執行次數,默認為一百萬
globals 用來指定要運行代碼的命名空間,默認為 None
import timeit
def func():
print('hello world')
print(f'耗時: {timeit.timeit(stmt=func, number=1)}')
hello world
耗時: 0.0007705999999999824

4、使用裝飾器統計

在實際項目代碼中,可以通過裝飾器方便的統計函數運行耗時。使用裝飾器來統計函數執行耗時的好處是對函數的入侵性小,易于編寫和修改。

裝飾器裝飾函數的方案只適用于統計函數的運行耗時,如果有代碼塊耗時統計的需求就不能用了,這種情況下可以使用 with 語句自動管理上下文。

(1)同步函數的統計

import time 
def coast_time(func):
def fun(*args, **kwargs):
t = time.perf_counter()
result = func(*args, **kwargs)
print(f'函數:{func.__name__} 耗時:{time.perf_counter() - t:.8f} s')
return result
return fun
@coast_time
def test():
print('hello world')
if __name__ == '__main__':
test()

(2)異步函數的統計

import asyncio
import time
from asyncio.coroutines import iscoroutinefunction
def coast_time(func):
def fun(*args, **kwargs):
t = time.perf_counter()
result = func(*args, **kwargs)
print(f'函數:{func.__name__} 耗時:{time.perf_counter() - t:.8f} s')
return result
async def func_async(*args, **kwargs):
t = time.perf_counter()
result = await func(*args, **kwargs)
print(f'函數:{func.__name__} 耗時:{time.perf_counter() - t:.8f} s')
return result
if iscoroutinefunction(func):
return func_async
else:
return fun
@coast_time
def test():
print('hello test')
time.sleep(1)
@coast_time
async def test_async():
print('hello test_async')
await asyncio.sleep(1)
if __name__ == '__main__':
test()
asyncio.get_event_loop().run_until_complete(test_async())
hello test
函數:test 耗時:1.00230700 s
hello test_async
函數:test_async 耗時:1.00572550 s

5、with語句統計

通過實現 enter 和 exit 函數可以在進入和退出上下文時進行一些自定義動作,例如連接或斷開數據庫、打開或 關閉文件、記錄開始或結束時間等,例如:我們用來統計函數塊的執行時間。

with語句不僅可以統計代碼塊的執行時間,也可以統計函數的執行時間,還可以統計多個函數的執行時間之和,相比裝飾器來說對代碼的入侵性比較大,不易于修改,好處是使用起來比較靈活,不用寫過多的重復代碼。

import asyncio
import time
class CoastTime(object):
def __init__(self):
self.t = 0
def __enter__(self):
self.t = time.perf_counter()
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print(f'耗時:{time.perf_counter() - self.t:.8f} s')
def test():
print('hello test')
with CoastTime():
time.sleep(1)
async def test_async():
print('hello test_async')
with CoastTime():
await asyncio.sleep(1)
if __name__ == '__main__':
test()
asyncio.get_event_loop().run_until_complete(test_async())
hello test
耗時:1.00723310 s
hello test_async
耗時:1.00366820 s
責任編輯:姜華 來源: 魔法小木瓜
相關推薦

2021-02-24 11:44:35

語言計算函數嵌入式系統

2025-01-16 07:00:00

AOPSpringBoot后端

2010-09-08 15:00:03

SQL語句執行

2011-05-17 13:32:04

oracle

2010-11-18 15:53:30

Oracle語句執行時

2009-11-26 11:05:44

PHP計算頁面執行時間

2024-04-12 07:50:40

Python監控利器Time 模塊

2010-04-28 12:33:36

Oracle自定義函數

2020-07-14 08:17:26

代碼執行時間

2018-07-18 15:13:56

MCU代碼時間

2024-01-17 08:36:38

useEffect執行時機函數

2021-08-18 11:55:25

Python函數代碼

2022-12-13 08:36:42

D-SMARTOracle數據庫

2010-09-06 13:17:19

SQL Server語句

2021-11-05 07:47:55

API計算任務

2012-01-10 10:44:36

字符串

2010-04-09 14:48:41

Oracle數據庫

2010-09-25 16:21:41

SQL語句

2011-03-14 10:19:43

2010-01-27 14:14:48

C++程序運行時間
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区日韩 | 天天躁人人躁人人躁狂躁 | 精品成人av | 久久专区 | 国产一二三区在线 | 日韩成人影院在线观看 | 欧美在线视频一区 | 国产午夜精品久久久 | 三级特黄特色视频 | 国产精久久久久久久 | 日韩av成人 | 婷婷丁香激情 | 欧美一区2区三区4区公司 | 精品视频999| 国内自拍视频在线观看 | 国产成人精品免费视频 | 欧洲视频一区二区 | 天天色图| 久久国产精品久久久久久 | caoporn免费在线视频 | 日本午夜精品 | 亚洲精品视频在线播放 | 亚洲福利精品 | 国产精品视频在线观看 | 欧美一区二区三区在线视频 | 亚洲精品黄色 | 久久国产秒 | 中文字字幕在线中文乱码范文 | 亚洲第一成人影院 | 天天综合91| 欧美在线成人影院 | 一区二区三区视频在线 | 男人的天堂视频网站 | 91精品国模一区二区三区 | 亚洲国产成人精品女人久久久 | 亚洲欧美综合精品久久成人 | 中文字幕一区二区三区四区五区 | 日本不卡高清视频 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 欧美亚洲网站 | 亚洲视频免费在线看 |