最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在IPython中進(jìn)行Python程序執(zhí)行時(shí)間的測(cè)量方法

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

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

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

之前寫(xiě)了一個(gè)簡(jiǎn)單的測(cè)試小腳本,

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

print(data)代碼如下:

在IPython中測(cè)試記錄如下:

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é)果有點(diǎn)……

確實(shí),這么簡(jiǎn)單的語(yǔ)句能夠執(zhí)行多少時(shí)間呢!何況現(xiàn)在用的本子還是標(biāo)壓處理器,又是I7計(jì)算最強(qiáng)芯。好,接下來(lái)改造一下,改成循環(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)

以上代碼存儲(chǔ)到新文件之后,在IPython中進(jìn)行測(cè)試與記錄。眼前閃過(guò)一大片輸出,拷貝全部的記錄不太可能了,截取部分結(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é)果確實(shí)是挺長(zhǎng)的,個(gè)人覺(jué)得主要的瓶頸應(yīng)該還是在輸出功能上吧!在用timeit測(cè)試一下,看看結(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é)果中可以看出,似乎這個(gè)結(jié)果也不是取均值(我看的教程中寫(xiě)的是取均值)。上面的結(jié)果提示中,測(cè)試進(jìn)行了三次,而從三次中取出了一個(gè)最好的結(jié)果。跟之前的結(jié)果確實(shí)是有一定的差距。我再修改一下代碼,把print改掉,看看是否print是一個(gè)時(shí)間消耗大戶(hù)!代碼如下:

#!/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

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

Time測(cè)試:

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確實(shí)是一個(gè)時(shí)間消耗大戶(hù)!而從這組結(jié)果中,似乎有覺(jué)得我對(duì)timeit的輸出理解有點(diǎn)偏了。直觀上的理解,上次的測(cè)試似乎只有1次循環(huán)測(cè)試,但是得出了三個(gè)最好的成績(jī)。而這次的測(cè)試進(jìn)行了100個(gè)循環(huán),得出了三個(gè)最好的成績(jī)?是這樣理解嗎?

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

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

相關(guān)文章

  • Python字典和列表性能之間的比較

    Python字典和列表性能之間的比較

    今天給大家介紹的是Python列表和字典的相關(guān)知識(shí),文中對(duì)Python字典和列表的性能作了充分的比較,好奇的小伙伴們一起來(lái)看看吧,需要的朋友可以參考下
    2021-06-06
  • python+selenium小米商城紅米K40手機(jī)自動(dòng)搶購(gòu)的示例代碼

    python+selenium小米商城紅米K40手機(jī)自動(dòng)搶購(gòu)的示例代碼

    這篇文章主要介紹了python+selenium小米商城紅米K40手機(jī)自動(dòng)搶購(gòu)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python虛擬環(huán)境的原理及使用詳解

    Python虛擬環(huán)境的原理及使用詳解

    這篇文章主要介紹了Python虛擬環(huán)境的原理及使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python 3.5實(shí)現(xiàn)檢測(cè)路由器流量并寫(xiě)入txt的方法實(shí)例

    python 3.5實(shí)現(xiàn)檢測(cè)路由器流量并寫(xiě)入txt的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于利用python 3.5實(shí)現(xiàn)檢測(cè)路由器流量并寫(xiě)入txt的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧。
    2017-12-12
  • python釘釘機(jī)器人運(yùn)維腳本監(jiān)控實(shí)例

    python釘釘機(jī)器人運(yùn)維腳本監(jiān)控實(shí)例

    今天小編就為大家分享一篇python釘釘機(jī)器人運(yùn)維腳本監(jiān)控實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • python連接mysql數(shù)據(jù)庫(kù)示例(做增刪改操作)

    python連接mysql數(shù)據(jù)庫(kù)示例(做增刪改操作)

    python連接mysql數(shù)據(jù)庫(kù)示例,提供創(chuàng)建表,刪除表,數(shù)據(jù)增、刪、改,批量插入操作,大家參考使用吧
    2013-12-12
  • python如何統(tǒng)計(jì)代碼運(yùn)行的時(shí)長(zhǎng)

    python如何統(tǒng)計(jì)代碼運(yùn)行的時(shí)長(zhǎng)

    這篇文章主要介紹了python如何統(tǒng)計(jì)代碼運(yùn)行的時(shí)長(zhǎng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 一文帶你了解Python中的延遲綁定

    一文帶你了解Python中的延遲綁定

    Python中的延遲綁定是指在嵌套函數(shù)中,內(nèi)部函數(shù)在被調(diào)用時(shí)才會(huì)綁定外部函數(shù)的變量,而不是在定義內(nèi)部函數(shù)時(shí)就綁定。本文將通過(guò)一些例子帶大家深入了解Python中的延遲綁定,感興趣的可以了解一下
    2023-05-05
  • 深入理解python中的淺拷貝和深拷貝

    深入理解python中的淺拷貝和深拷貝

    下面小編就為大家?guī)?lái)一篇深入理解python中的淺拷貝和深拷貝。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • Python設(shè)計(jì)模式之橋接模式原理與用法實(shí)例分析

    Python設(shè)計(jì)模式之橋接模式原理與用法實(shí)例分析

    這篇文章主要介紹了Python設(shè)計(jì)模式之橋接模式原理與用法,結(jié)合具體實(shí)例形式分析了Python橋接模式的相關(guān)概念、原理、定義及使用方法,需要的朋友可以參考下
    2019-01-01

最新評(píng)論

三门县| 朝阳区| 宿迁市| 乐都县| 义乌市| 淮滨县| 商都县| 渑池县| 阜平县| 正定县| 毕节市| 闻喜县| 黎城县| 怀化市| 山丹县| 南溪县| 鄄城县| 聂拉木县| 南安市| 木兰县| 桃源县| 白山市| 马边| 岑溪市| 平和县| 临潭县| 石狮市| 榆树市| 湘乡市| 高要市| 安徽省| 屏东县| 从江县| 鱼台县| 太原市| 固始县| 易门县| 宁海县| 紫云| 平乡县| 简阳市|