رفع مشکل module ‘time’ has no attribute ‘clock’
یکی از توابع پرکاربردی که در پایتون استفاده میشود تابع time است که برای کار با زمان از آن استفاده میشود. توابع مختلف در زبانهای برنامه نویسی هر کدام نسخههای مختلفی دارند که ممکن است در هر نسخه با توسعهی آن کمی تغییرات روی آن رخ دهد. البته یکی از جملات معروف در بین برنامه نویسها این است که سعی کنید برنامهای بنویسید که در صورت آپدیت به نسخهی جدید آن برنامههای قبلی که با آن نوشته شدهاند از کار نیفتد. در این نوشته روش رفع مشکل module ‘time’ has no attribute ‘clock را توضیح خواهیم داد. این مشکل در بین برنامههایی که با پایتون 2 شدهاند و حالا با پایتون 3 در حال اجرا هستند، رخ میدهد.
رفع مشکل module ‘time’ has no attribute ‘clock’
برای رفع این مشکل کافی است هر جا از تابع:
time.clock()
استفاده کرده اید آن را با تابع:
time.perf_counter()
جایگزین کنید. این مشکل به این علت رخ میدهد که تابع time در نسخهی جدید پایتون کمی تغییرات داشته و در آن clock حذف شده و به جای آن perf_counter جایگزین شده است.
اگر مشکلتان هنوز حل نشد در بخش نظرات همین نوشته برای ما بنویسید.



















جایگزینی با perf_counter روی کتابخانههای شخص ثالث هم تاثیر میذاره؟
بله، اگر کتابخانههای شخص ثالث از time.clock() استفاده کنند، جایگزینی با perf_counter() روی آنها هم تاثیر میگذارد و ممکن است نیاز به بهروزرسانی داشته باشند.
استفاده کردم
موفق باشین
وقتی clock حذف شده، تستهای قدیمی unit test هم ممکنه خطا بدن؟
بله دقیقا همینطوره. حذف clock میتونه باعث شکست خوردن تستهای قدیمیتون بشه، باید اونها رو هم با perf_counter بروزرسانی کنید.
توی نسخههای آینده پایتون ممکنه perf_counter هم حذف بشه؟
احتمال حذف perf_counter در آینده بسیار کم است، اما برای اطمینان میتوانید از time.monotonic() هم استفاده کنید که جایگزین پایدارتری است.
این مشکل فقط زمانی رخ میده که کد از پایتون 2 به پایتون 3 منتقل بشه؟
دقیقاً همینطوره. این مشکل معمولاً در انتقال کد از پایتون 2 به پایتون 3 به دلیل حذف تابع time.clock() رخ میدهد.