導航:首頁 > 編程語言 > 日內t0策略python

日內t0策略python

發布時間:2023-04-07 05:45:13

『壹』 7種檢測python程序運行時間、CPU和內存佔用的方法

1. 使用裝飾器來衡量函數執行時間

有一個簡單方法,那就是定義一個裝飾器來測量函數的執行時間,並輸出結果:

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

使用方式的話,就是在要監控的函數定義上面加上 @fn_timer 就行了

或者

# 可監控程序運行時間

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模塊,用來計算平均時間消耗。

執行下面的腳本可以運行該模塊。

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

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

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

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

3. 使用Unix系統中的time命令

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

運行time實用工具:

輸出結果為:

Total time running random_sort: 1.3931210041 seconds

real 1.49

user 1.40

sys 0.08

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

    real表示的是執行腳本的總時間

    user表示的是執行腳本消耗的CPU時間。

    sys表示的是執行內核函數消耗的時間。

注意:根據維基網路的定義,內核是一個計算機程序,用來管理軟體的輸入輸出,並將其翻譯成CPU和其他計算機中的電子設備能夠執行的數據處理指令。

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

4. 使用cProfile模塊

5. 使用line_profiler模塊

6. 使用memory_profiler模塊

7. 使用guppy包

『貳』 python怎麼計時

定義在默認的計時器中,針對不同平台採用不同方式。在Windows上,time.clock()具有微秒精度,但是time.time()精度是1/60s。在Unix上,time.clock()有1/100s精度,而且time.time()精度遠遠更高。在另外的平台上,default_timer()測量的是牆上時鍾時間,不是CPU時間。這意味著同一計算機的其他進程可能影響計時

版權聲明:

def clock(func):

def clocked(*args, **kwargs):

t0 = timeit.default_timer()

result = func(*args, **kwargs)

elapsed = timeit.default_timer()- t0

name = func.__name__

arg_str = ', '.join(repr(arg) for arg in args)

print('[%0.8fs] %s(%s) -> %r' % (elapsed, name, arg_str, result))

return result

return clocked

@clock

def run(seconds):

time.sleep(seconds)

return time

if __name__ == '__main__':

run(1)

本文為CSDN博主「FlyingPie」的原創文章,遵循CC 4.0 BY-SA版權協議,附上原文出處鏈接及聲明。

原文鏈接:https://blog.csdn.net/BobAuditore/article/details/79377679

閱讀全文

與日內t0策略python相關的資料

熱點內容
php論壇實訓報告 瀏覽:403
java日期字元串轉換成日期 瀏覽:135
linuxsftp連接 瀏覽:934
光伏日發電量演算法 瀏覽:125
小肚皮app怎麼才有vip 瀏覽:616
php全形轉換半形 瀏覽:927
java字元序列 瀏覽:539
杭州編譯分布式存儲區塊鏈 瀏覽:575
材料壓縮曲線 瀏覽:247
linux命令排序 瀏覽:151
手機熱點加密為啥連接不上電腦 瀏覽:979
編譯器合並計算 瀏覽:959
android音頻曲線 瀏覽:343
linuxftp自動登錄 瀏覽:802
運行編譯後網頁 瀏覽:70
閱讀app怎麼使用 瀏覽:319
centos防火牆命令 瀏覽:432
命令行變更 瀏覽:332
linux設備和驅動 瀏覽:207
加密貨幣騙局破案 瀏覽:345