Python Timeit() พร้อมตัวอย่าง
ความหมายของ Python เวลา()?
Python เวลา() เป็นวิธีการใน Python ไลบรารีเพื่อวัดเวลาดำเนินการที่ใช้โดยข้อมูลโค้ดที่กำหนด ที่ Python ไลบรารีรันคำสั่งโค้ด 1 ล้านครั้ง และจัดเตรียมเวลาขั้นต่ำที่ใช้จากชุดข้อมูลโค้ดที่กำหนด Python timeit() เป็นวิธีที่มีประโยชน์ที่ช่วยในการตรวจสอบประสิทธิภาพของโค้ด
วากยสัมพันธ์
timeit.timeit(stmt, setup,timer, number)
พารามิเตอร์
- สตม: นี่จะใช้โค้ดที่คุณต้องการวัดเวลาดำเนินการ ค่าเริ่มต้นคือ "ผ่าน"
- การติดตั้ง: ซึ่งจะมีรายละเอียดการตั้งค่าที่ต้องดำเนินการก่อน stmt ค่าเริ่มต้นคือ “pass”
- เครื่องจับเวลา: สิ่งนี้จะมีค่าตัวจับเวลา, timeit() มีการตั้งค่าเริ่มต้นอยู่แล้ว และเราสามารถเพิกเฉยต่อมันได้
- จำนวน: stmt จะดำเนินการตามหมายเลขที่ให้ไว้ที่นี่ ค่าเริ่มต้นคือ 1000000
หากต้องการทำงานกับ timeit() เราจำเป็นต้องนำเข้าโมดูล ดังที่แสดงด้านล่าง:
import timeit
ตัวอย่างแรก
นี่คือตัวอย่างง่ายๆ ของฟังก์ชัน timeit()
รหัสตัวอย่างที่ 1
# testing timeit() import timeit print(timeit.timeit('output = 10*5'))
Output:
0.06127880399999999
เราได้เห็นตัวอย่างง่ายๆ ที่ให้เวลาในการดำเนินการของเอาต์พุตคำสั่งโค้ดอย่างง่าย = 10*5 และเวลาที่ใช้ในการดำเนินการคือ 0.06127880399999999
การกำหนดเวลาหลายบรรทัดในโค้ดหลาม
มีสองวิธีในการดำเนินการโค้ดหลายบรรทัดใน timeit.timeit(): โดยคั่นบรรทัดด้วยเครื่องหมายเซมิโคลอน หรือใส่โค้ดเป็นสตริงด้วยเครื่องหมายคำพูดสามตัว
นี่คือตัวอย่างที่แสดงการทำงานของมัน
ตัวอย่างที่ 1: การใช้อัฒภาค
import timeit print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
Output:
The time taken is 0.137031482
ตัวอย่างที่ 2: การใช้เครื่องหมายคำพูดสามตัว
import timeit import_module = "import random" testcode = ''' def test(): return random.randint(10, 100) ''' print(timeit.repeat(stmt=testcode, setup=import_module))
Output:
C:\pythontest>python testtimeit.py The time taken is 0.182619178
เวลา – วิธีการ
นี่คือ 2 วิธีที่สำคัญในเวลา
timeit.default_timer() : สิ่งนี้จะส่งคืนเวลาเริ่มต้นเมื่อดำเนินการ
timeit.repeat (stmt, การตั้งค่า, ตัวจับเวลา, ทำซ้ำ, หมายเลข) : เช่นเดียวกับ timeit() แต่ด้วยการทำซ้ำ timeit() เรียกว่าจำนวนครั้งที่ให้การทำซ้ำ
ตัวอย่างโปรแกรมที่ 1
# testing timeit() import timeit import_module = "import random" testcode = ''' def test(): return random.randint(10, 100) ''' print(timeit.timeit(stmt=testcode, setup=import_module))
Output:
0.46715912400000004
2 ตัวอย่าง
default_timer() ตัวอย่าง
# testing timeit() import timeit import random def test(): return random.randint(10, 100) starttime = timeit.default_timer() print("The start time is :",starttime) test() print("The time difference is :", timeit.default_timer() - starttime)
Output:
The start time is : 0.220261875 The time difference is : 0.0004737320000000045
ตัวอย่างที่ 3: timeit.repeat()
# testing timeit() import timeit import_module = "import random" testcode = ''' def test(): return random.randint(10, 100) ''' print(timeit.repeat(stmt=testcode, setup=import_module, repeat=5))
Output:
[0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]
timeit.repeat() ทำงานคล้ายกับฟังก์ชัน timeit.timeit() โดยมีข้อแตกต่างเพียงอย่างเดียวในอาร์กิวเมนต์การทำซ้ำ และส่งคืนเวลาดำเนินการในรูปแบบอาร์เรย์พร้อมค่าตามหมายเลขการทำซ้ำ
การดำเนินการฟังก์ชันจับเวลา timeit.timeit() ภายในอินเทอร์เฟซบรรทัดคำสั่ง
ไวยากรณ์เพื่อเรียกใช้ฟังก์ชันของคุณภายใน timeit() บนบรรทัดคำสั่งมีดังนี้:
python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]
พารามิเตอร์บรรทัดคำสั่ง:
- -n N: จำนวนครั้งที่คุณต้องการให้โค้ดทำงาน
- -r N: จำนวนครั้งที่คุณต้องการให้ฟังก์ชัน timeit() ทำซ้ำ
- -s S: นี่จะมีรายละเอียดการตั้งค่าที่จะถูกดำเนินการก่อนการเรียกใช้โค้ด
- -t: สำหรับสิ่งนี้ คุณสามารถใช้ time.time() ได้
- -c: สำหรับสิ่งนี้ คุณสามารถใช้ time.clock() ได้
- -h: เพื่อขอความช่วยเหลือ
- คำสั่งรหัส: รายละเอียดของรหัส
ตัวอย่าง
C:\pythontest>python -m timeit -s 'text="hello world"' 20000000 loops, best of 5: 13.1 nsec per loop
อีกวิธีหนึ่งที่คุณสามารถดำเนินการภายในบรรทัดคำสั่งได้ดังแสดงด้านล่าง:
ตัวอย่าง
>>> import timeit >>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b')) The time taken is 0.15048536300000137 >>>
เหตุใด timeit() จึงเป็นวิธีที่ดีที่สุดในการวัดเวลาดำเนินการของ Python รหัส?
ต่อไปนี้เป็นเหตุผลบางประการที่เราพิจารณาว่า timeit() เป็นวิธีที่ดีที่สุดในการวัดเวลาดำเนินการ
- โดยจะรันคำสั่งโค้ด 1 ล้านครั้งซึ่งเป็นค่าเริ่มต้น และจากนั้นจะส่งคืนเวลาขั้นต่ำที่ใช้ไปให้กับคุณ คุณสามารถเพิ่ม/ลด 1 ล้านได้ด้วยการตั้งค่าหมายเลขอาร์กิวเมนต์ในฟังก์ชันเวลา ()
- ในขณะที่ดำเนินการทดสอบ ฟังก์ชันการรวบรวมขยะจะถูกปิดใช้งานทุกครั้งตามเวลา ()
- timeit() ภายในจะจับเวลาที่แม่นยำตามระบบปฏิบัติการที่คุณใช้ ตัวอย่างเช่น จะใช้ time.clock() Windows ระบบปฏิบัติการและ time.time() สำหรับ Mac และ Linux
สรุป
Timeit() ใช้เพื่อรับเวลาดำเนินการสำหรับโค้ดขนาดเล็กที่กำหนด
พารามิเตอร์ที่ใช้กับ timeit()
- stmt: นี่จะใช้โค้ดที่คุณต้องการวัดเวลาดำเนินการ
- การตั้งค่า: นี่จะมีรายละเอียดการตั้งค่าที่จำเป็นต้องดำเนินการก่อน stmt
- ตัวจับเวลา: นี่จะเป็นค่าตัวจับเวลา timeit() มีการตั้งค่าเริ่มต้นอยู่แล้ว และเราสามารถเพิกเฉยต่อมันได้
- number: stmt จะดำเนินการตามหมายเลขที่ให้ไว้ที่นี่