الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تخفيف إستهلاك برامج بايثون للمُعالجّ

بدأه Mr.B في 3 أبريل 2011 · 4 رد · 1,176 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السّلام عليكم ورحمة الله وبركاته

أودّ أن أسأل عن طريقة لتقليل إستهلاك المعالج وموارد الجهاز من نفسّ اللغة.

بدون إستخدام sleep أو إستخدام أدوات النظام. مثلاً :

for i in range(1,1000000): print(i)

ستقفز إستهلاك المعالج لقرابة 80% , والمشكلة أن التطبيق سيكون تطبيق ويب \:

أي أفكار لتقليل الإستهلاك ...

#3

فعلا حلقات التكرار تستهلك قدرات المعالج

أيضا إستخدم Xrange حتى توفر من إستهلاك الرام :lol:

#4

بارك الله فيكم ياشباب , for كانت مثال فقط :lol:

مافكرت به هو إستخدام sleep , لكن أبحث عن طريقة أكثر عمليّه منها

#5

السلام عليكم ورحمة اللله وبركاته :

أولا:

تستخدم حزم أخرى غير المفسر الأصلي مثل:

jyhon-1 لتحويل كود بايثون إلى البايت الكود التابع لجافا يعني يسير برنامجك مثل سرعة برامج جافا مع استخدام مكتبات الجافا

cython-1 تحول الكود إلى لغة الآلة

المفسر Pypy أسرع من المفسر الأصلي لبايثون تقريبا الضعف ويحوي على ميزات عديدة منها:

1- التوافقية مع بايثون

2- تحويل البرنامج إلى حزمة java .jar ـ!

3- أمان أكثر إذا اردت تشغل برامج غير موثوقة انظر هذا

ثانيا :

اتباع بعض النصائح لتحسين الكود

اقتباس
اتضح لي فيما بعد أن الفلسفة التي يتبعها مطورو بايثون هي:

1. سهولة قراءة و وضوح الكود أهم من تعقيده لأجل تحسينه (optimization) للإستفادة من أخر جزء من الثانية.

2. هنالك قانون يسمى قانون مور (Moore's law) يقول أن كفائة العتاد تتضاعف كل 18 شهر تقريا. بمعنى أنه مع تطور العتاد سيسبح الفرق بسيطا بين الكود المُحسن و العادي.

3. و إذا كانت السرعة أولوية لا غنى عنها حينها يجب على المبرمج أن يستخدم قاعدة 90/10 بحيث يُفضل أن يكتب الجزء المسرع/المحسن بلغة C أو لغة أخرى.

وأيضا

اقتباس

الخلاصة:

1. أكتب دائما كود بسيط و تسهل قرائته.

2. الحلاقات التسلسلية for تستهلك الكثير من وقت المعالج، و يمكن تحسينها بإتباع بعض النصائح.

3. إدا كانت السرعة جد ضرورية في منطقة معينة من برنامجك حينها قم ببرمجة ذلك الجزء بلغة سي أو سي ++

4. سيحصل بايثون على آلة إفتراضية محسنة (LLVM) ستجعل أداءه مشابه للغة سي و سي++

مصدر الاقتباس

ويمكنك أيضا قراءة بعض النصائح :

http://wiki.python.o...PerformanceTips

وهذه مقارنة بين أدء مفسر python و pypy من جهازي :

ملحوظة: استخدمت الكود الرابع من مصدر الاقتباس

الزمن اللذي استغرقه الكود في المفسرين:

/index.php?app=core&module=attach&section=attach&attach_rel_module=post&attach_id=116252

مقارنة في أدء المعالج:

/index.php?app=core&module=attach&section=attach&attach_rel_module=post&attach_id=116253

لاحظت الفرق كبير جدا

post-167535-054654800 1302417469_thumb.p

post-167535-033491300 1302418258_thumb.p

المرفقات
pypy-1.4.1-linux64-bin.pngpypy2.png

تم تعديل هذه المشاركة بواسطة red mercury في 10 أبريل 2011 في 09:54

2

مواضيع مشابهة