بايثون Timeit() مع أمثلة

ما هو بايثون Timeit ()؟

بايثون تيميت () هي طريقة في مكتبة بايثون لقياس وقت التنفيذ الذي يستغرقه مقتطف التعليمات البرمجية المحدد. تقوم مكتبة Python بتشغيل بيان التعليمات البرمجية مليون مرة وتوفر الحد الأدنى من الوقت المستغرق من مجموعة مقتطفات التعليمات البرمجية المحددة. تعد Python timeit() طريقة مفيدة تساعد في التحقق من أداء الكود.

بناء الجملة

timeit.timeit(stmt, setup,timer, number)

المعلمات

  • com.stmt: سيأخذ هذا الكود الذي تريد قياس وقت التنفيذ له. القيمة الافتراضية هي "تمرير".
  • الإعداد: وهذا سيكون الإعداد ديtails التي يجب تنفيذها قبل stmt. القيمة الافتراضية هي "تمرير".
  • مؤقت: سيكون لهذا قيمة المؤقت، وtimeit() لديه بالفعل مجموعة قيمة افتراضية، ويمكننا تجاهلها.
  • عدد: سيتم تنفيذ stmt حسب الرقم الوارد هنا. القيمة الافتراضية هي 1000000.

للعمل مع timeit()، نحتاج إلى استيراد الوحدة، كما هو موضح أدناه:

import timeit

المثال الأول

فيما يلي مثال بسيط لوظيفة timeit()

مثال الكود 1

# testing timeit()
import timeit
print(timeit.timeit('output = 10*5'))

الإخراج:

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'))

الإخراج:

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))

الإخراج:

C:\pythontest>python testtimeit.py
The time taken is  0.182619178

timeit – الطرق

فيما يلي طريقتان مهمتان للوقت

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))

الإخراج:

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)

الإخراج:

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))

الإخراج:

 [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: سيكون لهذا الإعداد details التي سيتم تنفيذها قبل تنفيذ التعليمات البرمجية.
  • -t: لهذا يمكنك الاستفادة من time.time()
  • -c: لهذا يمكنك الاستفادة من time.clock()
  • -ح: للمساعدة
  • بيان الكود: الكود details.

مثال

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() أفضل طريقة لقياس وقت التنفيذ.

  • يقوم بتشغيل بيان الكود مليون مرة وهي القيمة الافتراضية، ومن ذلك سيعيد لك الحد الأدنى من الوقت المستغرق. يمكنك أيضًا زيادة/تقليل المليون عن طريق تعيين رقم الوسيطة في وظيفة الوقت ().
  • أثناء تنفيذ الاختبار، يتم تعطيل جمع البيانات المهملة في كل مرة بواسطة وظيفة الوقت ().
  • يأخذ timeit() داخليًا الوقت الدقيق وفقًا لنظام التشغيل المستخدم لديك. على سبيل المثال، سوف يستخدم time.clock()‎ لـ Windows نظام التشغيل وtime.time() لنظامي التشغيل Mac وLinux.

نبذة عامة

يتم استخدام Timeit() للحصول على الوقت المستغرق للتنفيذ للتعليمات البرمجية الصغيرة المقدمة

المعلمات المستخدمة مع timeit()

  • stmt: سيأخذ هذا الكود الذي تريد قياس وقت التنفيذ
  • الإعداد: سيكون لهذا الإعداد details التي يجب تنفيذها قبل stmt
  • الموقت: سيكون لهذا قيمة الموقت، timeit () لديه بالفعل مجموعة قيمة افتراضية، ويمكننا تجاهلها.
  • الرقم: سيتم تنفيذ stmt حسب الرقم الوارد هنا.