欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在IPython中進行Python程序執(zhí)行時間的測量方法

 更新時間:2018年11月01日 08:38:44   作者:grey_csdn  
今天小編就為大家分享一篇在IPython中進行Python程序執(zhí)行時間的測量方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在寫MATLAB的腳本的時候我時長會用tic、toc進行一下程序運行時間的測量。在Python中偶爾也會測試下,但是基本上都是靠使用time模塊。接觸了IPython之后突然間發(fā)現(xiàn),原來程序執(zhí)行時間的測試可以如此簡單!

在IPython中,程序執(zhí)行時間的測試是通過魔術(shù)函數(shù)來實現(xiàn)。這個功能的魔術(shù)函數(shù)有兩個,一個是time,還有一個是timeit。后面這個功能與前面的功能類似,但是更為精確,因為測試采用了多次測試求取平均值的方式實現(xiàn)。

之前寫了一個簡單的測試小腳本,

#!/usr/bin/python
 
import numpy as np
from numpy.randomimport randn
 
data = {i :randn() for i in range(7)}

print(data)代碼如下:

在IPython中測試記錄如下:

In [21]: %time%run dict.py
{0:1.1356172702418055, 1: -0.24725099335195655, 2: -0.8566028472732841, 3:-0.7027863981377108, 4: 0.8563383373116604, 5: 1.4790260114125025, 6:0.45741003038960254}
Wall time: 0 ns
 
In [22]: %time%run dict.py
{0:0.4634308244997993, 1: -0.2169481701227914, 2: 1.844213869777202, 3:-1.09428552819743, 4: -0.3162553722440559, 5: 0.35052990092285824, 6:-1.0779260478165211}
Wall time: 0 ns

這結(jié)果有點……

確實,這么簡單的語句能夠執(zhí)行多少時間呢!何況現(xiàn)在用的本子還是標壓處理器,又是I7計算最強芯。好,接下來改造一下,改成循環(huán):

#!/usr/bin/python
 
import numpy as np
from numpy.randomimport randn
 
for i inrange(1000):
data = {i : randn() for i in range(7)}
print(data)

以上代碼存儲到新文件之后,在IPython中進行測試與記錄。眼前閃過一大片輸出,拷貝全部的記錄不太可能了,截取部分結(jié)果如下:

{0:-0.8346562430694008, 1: -0.5081226699243429, 2: 0.14690620427134915, 3:-1.1947018796604227, 4: 0.5299884594565932, 5: -0.11730239691529774, 6:-0.008304349615949396}
{0:-0.5004558540946741, 1: -2.239882398599743, 2: -0.4877611466394901, 3:0.04679029941320335, 4: -0.04061984884439187, 5: -0.18026780798066566, 6:0.2617579789690715}
{0:-0.8498496249579838, 1: -0.34650772255315343, 2: -0.7067822075542513, 3:0.4675343777714329, 4: -2.095049716609193, 5: -1.9396619017424426, 6:1.4723754138476228}
{0:1.0829454562962688, 1: 0.3658593642766029, 2: 0.7825005873884392, 3:-0.7024245957641886, 4: -0.9083494908408439, 5: -0.5225361343604294, 6:0.2780526056846729}
Wall time: 2.67 s

這次的執(zhí)行結(jié)果確實是挺長的,個人覺得主要的瓶頸應(yīng)該還是在輸出功能上吧!在用timeit測試一下,看看結(jié)果是否有大的變化。部分記錄結(jié)果如下:

{0:1.1881922773474327, 1: 2.095703415950821, 2: 0.7768251617416795, 3:-0.3639801567794642, 4: -1.2155069020886828, 5: 0.05454831526380187, 6:0.521994301720664}
{0:0.0962573073179745, 1: -0.6917641905037167, 2: 1.021197433972855, 3:0.4155701479521505, 4: 2.393391538898768, 5: 1.3755258048747323, 6:-0.5540780961303758}
{0:-0.418199398478115, 1: 1.1973929026808094, 2: -0.3243683593668846, 3:-1.7765735471011064, 4: -1.1567528174241677, 5: -2.297151750515544, 6:1.6966820033283279}
1 loop, best of 3:1.68 s per loop

從上面的結(jié)果中可以看出,似乎這個結(jié)果也不是取均值(我看的教程中寫的是取均值)。上面的結(jié)果提示中,測試進行了三次,而從三次中取出了一個最好的結(jié)果。跟之前的結(jié)果確實是有一定的差距。我再修改一下代碼,把print改掉,看看是否print是一個時間消耗大戶!代碼如下:

#!/usr/bin/python
 
import numpy as np
from numpy.randomimport randn
 
for i inrange(1000):
data = {i : randn() for i in range(7)}
a = data

兩種測試的結(jié)果分別如下:

Time測試:

In [28]: %time%run dict_loop_no_disp.py
Wall time: 15 ms
In [29]: %timeit%run dict_loop_no_disp.py
100 loops, best of3: 3.2 ms per loop

從上面的結(jié)果可看出,print確實是一個時間消耗大戶!而從這組結(jié)果中,似乎有覺得我對timeit的輸出理解有點偏了。直觀上的理解,上次的測試似乎只有1次循環(huán)測試,但是得出了三個最好的成績。而這次的測試進行了100個循環(huán),得出了三個最好的成績?是這樣理解嗎?

如何理解暫且不去深究了,總體說來是后面一種精確一點罷了!實際的使用中,用的時候大約還是不多,畢竟我的Python程序執(zhí)行時間都少的幾乎可以忽略。

以上這篇在IPython中進行Python程序執(zhí)行時間的測量方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用Selenium添加cookie實現(xiàn)自動登錄的示例代碼(fofa)

    利用Selenium添加cookie實現(xiàn)自動登錄的示例代碼(fofa)

    這篇文章主要介紹了利用Selenium添加cookie實現(xiàn)自動登錄的示例代碼(fofa),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • 基于logstash實現(xiàn)日志文件同步elasticsearch

    基于logstash實現(xiàn)日志文件同步elasticsearch

    這篇文章主要介紹了基于logstash實現(xiàn)日志文件同步elasticsearch,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Django框架搭建的簡易圖書信息網(wǎng)站案例

    Django框架搭建的簡易圖書信息網(wǎng)站案例

    這篇文章主要介紹了Django框架搭建的簡易圖書信息網(wǎng)站案例,結(jié)合具體實例形式分析了基于Django框架實現(xiàn)圖書信息管理網(wǎng)站的具體步驟、相關(guān)實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下
    2019-05-05
  • Python通過getattr函數(shù)獲取對象的屬性值

    Python通過getattr函數(shù)獲取對象的屬性值

    這篇文章主要介紹了Python通過getattr函數(shù)獲取對象的屬性值,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • 基于Python的圖像數(shù)據(jù)增強Data Augmentation解析

    基于Python的圖像數(shù)據(jù)增強Data Augmentation解析

    這篇文章主要介紹了基于Python的圖像數(shù)據(jù)增強Data Augmentation解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 詳解PyTorch手寫數(shù)字識別(MNIST數(shù)據(jù)集)

    詳解PyTorch手寫數(shù)字識別(MNIST數(shù)據(jù)集)

    這篇文章主要介紹了詳解PyTorch手寫數(shù)字識別(MNIST數(shù)據(jù)集),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • 詳解如何將Python可執(zhí)行文件(.exe)反編譯為Python腳本

    詳解如何將Python可執(zhí)行文件(.exe)反編譯為Python腳本

    將?Python?可執(zhí)行文件(.exe)反編譯為?Python?腳本是一項有趣的技術(shù)挑戰(zhàn),可以幫助我們理解程序的工作原理,下面我們就來看看具體實現(xiàn)步驟吧
    2024-03-03
  • pandas如何修改某一列的數(shù)據(jù)

    pandas如何修改某一列的數(shù)據(jù)

    這篇文章主要介紹了pandas如何修改某一列的數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python掃描線填充算法詳解

    python掃描線填充算法詳解

    這篇文章主要為大家詳細介紹了python掃描線填充算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 使用Django的模版來配合字符串翻譯工作

    使用Django的模版來配合字符串翻譯工作

    這篇文章主要介紹了使用Django的模版來配合字符串翻譯工作,Django是最具人氣的Python開發(fā)框架,需要的朋友可以參考下
    2015-07-07

最新評論