הבעיה העיקרית בבדיקת מהירות האינטרנט באמצעות Python היא שאין דרך סטנדרטית לעשות זאת. תוכניות שונות יתנו לך תוצאות שונות, וגם אם תוכנית אחת אומרת שהחיבור שלך מהיר, ייתכן שזה לא המקרה במציאות.
import speedtest import os import time def test_speed(): s = speedtest.Speedtest() s.get_best_server() s.download() s.upload() return s.results.dict()['download'] / 8000000, s.results.dict()['upload'] / 8000000, s.results.dict()['ping'] def main(): while True: download, upload, ping = test_speed() print('Download: {:0.2f} MbpstUpload: {:0.2f} MbpstPing: {} ms'.format(download, upload, ping)) time.sleep(5) if __name__ == '__main__': main()
שלוש השורות הראשונות מייבאות את מודולי המהירות, מערכת ההפעלה והזמן.
השורה הבאה מגדירה פונקציה בשם test_speed(). פונקציה זו משתמשת במודול בדיקת המהירות כדי לבדוק את מהירות החיבור לאינטרנט ומחזירה את התוצאות.
השורה הבאה מגדירה פונקציה בשם main(). פונקציה זו קוראת לפונקציה test_speed() ומדפיסה את התוצאות. לאחר מכן הוא ישן 5 שניות לפני שהוא חוזר על עצמו.
לבסוף, אם הקובץ הזה מופעל כסקריפט (ולא מיובא כמודול), הפונקציה main() נקראת.
מהי מהירות האינטרנט
ניתן למדוד את מהירות האינטרנט ב-Python בבתים לשנייה.
שירותי מהירות אינטרנט
ישנן כמה דרכים שונות למדידת מהירות חיבור לאינטרנט ב-Python. הדרך הפשוטה ביותר היא להשתמש בזמן הפונקציה המובנה. time() מדפיס את השעה הנוכחית בשניות.
הדרך השנייה למדוד את המהירות של חיבור לאינטרנט היא להשתמש בפקודה netstat. netstat מציג את כל חיבורי הרשת הפעילים ואת מצבם. כדי לקבל מידע על המהירות של חיבור רשת ספציפי, השתמש באפשרות -i:
$ netstat -i | grep ":80" חיבורי אינטרנט פעילים (שרתים ולקוחות) Proto Recv-Q Send-Q כתובת מקומית כתובת זרה מצב PID/תוכנית שם tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN 548/sshd tcp6 0 0 : ::80 :::* LISTEN 672/docker tcp6 0 1 ::1:80 :::* LISTEN 672/docker