簡體   English   中英

如何計算Python程序運行多長時間?

[英]How to time how long a Python program takes to run?

有沒有一種簡單的方法來計算Python程序的執行時間?

澄清:整個計划

使用timeit

該模塊提供了一種簡單的方法來計算一小段Python代碼。 它既有命令行,也有可調用的接口。 它避免了許多用於測量執行時間的常見陷阱。

你需要一個字符串中的python語句; 如果你的代碼中有一個main函數,你可以像這樣使用它:

>>> from timeit import Timer
>>> timer = Timer('main()', 'from yourmodule import main')
>>> print timer.timeit()

第二個字符串提供設置,第一個語句的定時環境。第二個部分沒有定時,用於設置階段。 然后第一個字符串貫穿它的步伐; 默認為百萬次,以獲得准確的時間。

如果您需要更詳細的信息,請使用其中一個python profilers

分析器是一個描述程序運行時性能的程序,提供各種統計信息。

最簡單的方法是使用命令行中的cProfile模塊:

$ python -m cProfile yourprogram.py

您可能想要使用內置的分析器

您還可以使用以下簡單的裝飾器來測量函數的運行時間:

import time
def myprof(func):
    def wrapping_fun(*args):
        start = time.clock()
        result = func(*args)
        end = time.clock()
        print 'Run time of %s is %4.2fs' % (func.__name__, (end - start))
        return result
    return wrapping_fun

用法:

@myprof
def myfun():
    # function body 

如果您使用的是Linux / Unix / POSIX兼容平台,請使用time 通過這種方式,您不會干擾腳本,也不會因為不必要的詳細(適合您)分析而減慢速度。 當然,您可以將它用於幾乎任何事情,而不僅僅是Python腳本。

對於片段,請使用timeit模塊。

對於整個程序,請使用cProfile模塊。

使用timeit

>>> import timeit  
>>> t = timeit.Timer(stmt="lst = ['c'] * 100")  
>>> print t.timeit()  
1.10580182076  
>>> t = timeit.Timer(stmt="lst = ['c' for x in xrange(100)]")  
>>> print t.timeit()  
7.66900897026  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM