ค้นหาเวลาที่ใช้กับสคริปต์ python ในการดำเนินการให้เสร็จสมบูรณ์


143

ฉันมีรหัสต่อไปนี้ในสคริปต์หลาม:

def fun(): 
  #Code here

fun()

ฉันต้องการรันสคริปต์นี้และค้นหาว่าต้องใช้เวลานานเท่าใดจึงจะสามารถเรียกใช้งานได้ในไม่กี่นาที ฉันจะทราบได้อย่างไรว่าต้องใช้เวลานานเท่าใดในการเรียกใช้สคริปต์นี้ ตัวอย่างจะได้รับการชื่นชมจริงๆ


5
การโจมตีครั้งแรกในการค้นหา "python function timing": daniweb.com/software-development/python/code/216610
Piskvor ออกจากอาคารใน

นอกจากนี้คุณยังสามารถใช้cProfile ให้คุณเลือกเวลาแต่ละฟังก์ชั่นแยกจากกัน
Adam Rosenthal

คำตอบ:


263
from datetime import datetime
startTime = datetime.now()

#do something

#Python 2: 
print datetime.now() - startTime 

#Python 3: 
print(datetime.now() - startTime)

5
ใหม่สำหรับ Python ที่ทำงานใน 3.6.1 วันที่และเวลา FYI ​​ไม่มีแอตทริบิวต์ในขณะนี้อีกต่อไป
WizzleWuzzle

5
@WizzleWuzzle ใช้datetime.now()งานได้ถ้าคุณทำfrom datetime import datetimeไม่ใช่แค่import datetime(ยืนยันแค่ใน Python 3.6.4)
Paul Wicking

130

คุณรันสคริปต์จากบรรทัดคำสั่งบน Linux หรือ UNIX หรือไม่ ในกรณีนี้คุณสามารถใช้

time ./script.py

2
time -p ./script.py -pตั้งค่าสถานะสำหรับไปป์ไลน์
Joy

1
และท่อส่งอะไรช่วยเราได้บ้าง
ak3191

time python myScript.py สำหรับ windows เวลาที่ใช้ในการดำเนินการเป็นวินาที: 38.509970903396606 จริง 0m38.792s ผู้ใช้ 0m0.015s sys 0m0.046s
Aryashree Pritikrishna

64
import time
start = time.time()

fun()

# python 2
print 'It took', time.time()-start, 'seconds.'

# python 3
print('It took', time.time()-start, 'seconds.')

5
บรรทัดสุดท้ายน่าจะอ่านprint('It took {0:0.1f} seconds'.format(time.time() - start))ใน python 3.x
Chris Mueller

3
@ChrisMueller ฉันทำงานใน python2.7 ฉันจะแสดงความคิดเห็นที่นี่เพื่อให้ผู้คนเห็นทั้งสองเวอร์ชัน
Double AA

15

สิ่งที่ฉันมักจะทำคือใช้clock()หรือtime()จากtimeไลบรารี clockวัดเวลาล่ามในขณะที่timeวัดเวลาระบบ คำเตือนเพิ่มเติมสามารถพบได้ในเอกสาร

ตัวอย่างเช่น,

def fn():
    st = time()
    dostuff()
    print 'fn took %.2f seconds' % (time() - st)

timeitหรือมิฉะนั้นคุณสามารถใช้ ฉันมักจะใช้timeวิธีการนี้เนื่องจากวิธีที่รวดเร็วที่ฉันสามารถแก้ไขได้ แต่ถ้าคุณกำหนดเวลาให้โค้ดที่แยกได้สามารถทำได้timeitง่าย

จากเอกสาร timeit ,

def test():
    "Stupid test function"
    L = []
    for i in range(100):
        L.append(i)

if __name__=='__main__':
    from timeit import Timer
    t = Timer("test()", "from __main__ import test")
    print t.timeit()

จากนั้นในการแปลงเป็นนาทีคุณสามารถหารด้วย 60 ถ้าคุณต้องการรันไทม์ของสคริปต์ในรูปแบบที่อ่านได้ง่ายไม่ว่าจะเป็นวินาทีหรือวันคุณสามารถแปลงเป็น a timedeltaและstr:

runtime = time() - st
print 'runtime:', timedelta(seconds=runtime)

[D day[s], ][H]H:MM:SS[.UUUUUU]และที่จะพิมพ์ออกมาบางสิ่งบางอย่างของแบบฟอร์ม คุณสามารถตรวจสอบเอกสาร timedelta

และในที่สุดถ้าสิ่งที่คุณต้องการหลังจากนั้นคือการทำโปรไฟล์รหัสของคุณ Python ก็จะทำให้ห้องสมุดโปรไฟล์นั้นพร้อมใช้งานเช่นกัน


15
import time 

startTime = time.time()
# Your code here !
print ('The script took {0} second !'.format(time.time() - startTime))

รหัสก่อนหน้านี้ใช้ได้กับฉันโดยไม่มีปัญหา!


14
import sys
import timeit

start = timeit.default_timer()

#do some nice things...

stop = timeit.default_timer()
total_time = stop - start

# output running time in a nice format.
mins, secs = divmod(total_time, 60)
hours, mins = divmod(mins, 60)

sys.stdout.write("Total running time: %d:%d:%d.\n" % (hours, mins, secs))

การพิมพ์ออกมาเป็นเวลา 50 วินาทีคือ "0: 0: 50"
htzfun

10

ใช้โมดูล timeit มันง่ายมาก. เรียกใช้ไฟล์ example.py ของคุณเพื่อให้ทำงานได้ใน Python Shell ตอนนี้คุณควรจะสามารถเรียกใช้ฟังก์ชันของคุณในเชลล์ได้แล้ว ลองใช้เพื่อตรวจสอบการทำงาน

>>>fun(input)
output

ดีใช้งานได้แล้วนำเข้า timeit และตั้งค่าตัวจับเวลา

>>>import timeit
>>>t = timeit.Timer('example.fun(input)','import example')
>>>

ตอนนี้เรามีการตั้งค่าตัวจับเวลาของเราเราสามารถดูว่าใช้เวลานานแค่ไหน

>>>t.timeit(number=1)
some number here

และเราไปที่นั่นมันจะบอกคุณว่ามันใช้เวลากี่วินาที (หรือน้อยกว่า) ในการเรียกใช้ฟังก์ชั่นนั้น ถ้ามันเป็นฟังก์ชั่นที่เรียบง่ายคุณสามารถเพิ่มมันเป็น t.timeit (number = 1,000) (หรือตัวเลขใด ๆ !) แล้วหารคำตอบด้วยตัวเลขเพื่อให้ได้ค่าเฉลี่ย

ฉันหวังว่านี่จะช่วยได้.


0

ใช้แพคเกจเวลาและวันที่และเวลา

หากใครต้องการรันสคริปต์นี้และค้นหาว่าต้องใช้เวลานานเท่าใดจึงจะสามารถเรียกใช้งานได้ในไม่กี่นาที

import time
from time import strftime
from datetime import datetime 
from time import gmtime

def start_time_():    
    #import time
    start_time = time.time()
    return(start_time)

def end_time_():
    #import time
    end_time = time.time()
    return(end_time)

def Execution_time(start_time_,end_time_):
   #import time
   #from time import strftime
   #from datetime import datetime 
   #from time import gmtime
   return(strftime("%H:%M:%S",gmtime(int('{:.0f}'.format(float(str((end_time-start_time))))))))

start_time = start_time_()
# your code here #
[i for i in range(0,100000000)]
# your code here #
end_time = end_time_()
print("Execution_time is :", Execution_time(start_time,end_time))

รหัสข้างต้นใช้งานได้สำหรับฉัน ฉันหวังว่านี่จะช่วยได้.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.