بايثون العرب
10.4K subscribers
871 photos
183 videos
770 links
Download Telegram
🚀 تحسين أداء Python: استخدام `__slots__`

هل تعاني من استهلاك ذاكرة كبير في كائنات Python الخاصة بك؟ اكتشف كيف يمكن لـ `__slots__` أن يساعد في تحسين الأداء وتقليل استهلاك الذاكرة.

class Point:
__slots__ = ('x', 'y')

def __init__(self, x, y):
self.x = x
self.y = y

# بدون __slots__:
class PointWithoutSlots:
def __init__(self, x, y):
self.x = x
self.y = y

import sys

p1 = Point(1, 2)
ps1 = PointWithoutSlots(1, 2)

print(f'Size with __slots__: {sys.getsizeof(p1)} bytes')
print(f'Size without __slots__: {sys.getsizeof(ps1)} bytes')


عندما لا تستخدم `__slots__`، يقوم Python بتخزين سمات الكائن في قاموس (`__dict__`). أما باستخدام `__slots__`، فأنت تحدد مسبقًا السمات المسموح بها، مما يمنع إنشاء `__dict__` ويجعل الكائنات أكثر كفاءة في استخدام الذاكرة. هذا مفيد بشكل خاص عند إنشاء عدد كبير من الكائنات.

['#Python', '#برمجة', '#تحسين_الأداء', '#علوم_البيانات', '#تطوير_الويب', '#كود']
💡 تحسين أداء Python: استخدام List Comprehensions! 🚀

هل تبحث عن طريقة لكتابة كود Python أكثر إيجازًا وكفاءة؟ تعلم كيف تجعل قوائمك تنشأ بأسلوب أنيق ومُحسَّن مع List Comprehensions!

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)

# مقارنة مع الحلقة التقليدية:
# squares_loop = []
# for x in numbers:
# squares_loop.append(x**2)
# print(squares_loop)


List Comprehensions توفر طريقة مختصرة لإنشاء القوائم. بدلاً من استخدام حلقة `for` تقليدية مع `append`، يمكنك كتابة نفس المنطق في سطر واحد، مما يجعل الكود أسهل للقراءة وأسرع في التنفيذ.

['#Python', '#برمجة', '#ListComprehensions', '#تطوير', '#كود']
✨ تلميح بايثون: استخدام enumerate() بسهولة ✨

هل سئمت من تتبع الفهارس يدويًا عند المرور على قائمة؟ تابع هذا التلميح السريع لاستخدام `enumerate()`!

my_list = ['تفاحة', 'موز', 'كرز']

for index, value in enumerate(my_list):
print(f'الفهرس: {index}, القيمة: {value}')


الدالة `enumerate()` في بايثون تضيف عدادًا إلى قابل للتكرار (مثل القوائم) وتعيده ككائن `enumerate`. يمكنك بعد ذلك فك هذا الكائن إلى الفهرس والقيمة في كل تكرار للحلقة، مما يجعل الكود أكثر وضوحًا وأقل عرضة للأخطاء.

['#بايثون', '#برمجة', '#تلميحات_بايثون', '#enumerate', '#تعلم_البرمجة']
✨ تحسين أداء Python: استخدام `list comprehension` ✨

هل تريد كتابة كود Python أكثر إيجازًا وكفاءة؟ تعلم كيف يمكن لـ `list comprehension` تبسيط مهامك!

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)


بدلاً من كتابة حلقة `for` تقليدية لإنشاء قائمة جديدة، تسمح لك `list comprehension` بإنشاء قوائم جديدة بطريقة موجزة وواضحة. في هذا المثال، قمنا بإنشاء قائمة `squares` تحتوي على مربعات كل رقم في قائمة `numbers`.

['#Python', '# البرمجة', '#ListComprehension', '#كود', '#تطوير']
🚀 تسريع عمليات البحث في بايثون! 🚀

هل سئمت من البحث البطيء في القوائم والنصوص؟ إليك حيلة سريعة باستخدام `in`!

my_list = list(range(1000000))
search_item = 999999

# الطريقة التقليدية (أبطأ)
if search_item in my_list:
print("العنصر موجود (بالطريقة التقليدية)")

# طريقة أسرع باستخدام set (للبحث المتكرر)
my_set = set(my_list)
if search_item in my_set:
print("العنصر موجود (باستخدام set)")


عند البحث عن عنصر في قائمة كبيرة، قد يستغرق الأمر وقتًا طويلاً. تحويل القائمة إلى `set` (مجموعة) قبل البحث يجعل العملية أسرع بكثير، خاصة إذا كنت ستقوم بالبحث عدة مرات، لأن البحث في المجموعات يتم في وقت ثابت (O(1)) تقريبًا، بينما في القوائم يعتمد على حجم القائمة (O(n)).

['#بايثون', '#برمجة', '#تطوير', '#Python', '#Programming', '#Tips']
💡 تحسين أداء Python باستخدام List Comprehensions!

هل تريد كتابة كود Python أكثر إيجازًا وكفاءة؟ تعلم كيف تستخدم List Comprehensions لتحقيق ذلك!

numbers = [1, 2, 3, 4, 5]
squares = [n**2 for n in numbers]
print(squares)

# مقارنة مع الطريقة التقليدية:
squares_traditional = []
for n in numbers:
squares_traditional.append(n**2)
print(squares_traditional)


List Comprehensions توفر طريقة مختصرة لإنشاء القوائم. بدلاً من استخدام حلقة `for` تقليدية، يمكنك كتابة نفس المنطق في سطر واحد، مما يجعل الكود أسهل للقراءة وأكثر كفاءة في كثير من الأحيان.

['#Python', '#برمجة', '#ListComprehensions', '#كود', '#تطوير', '#نصائح_برمجة']
✨ تحسين أداء Python: استخدام List Comprehensions!

هل تريد كتابة كود Python أكثر إيجازًا وفعالية؟ جرب استخدام List Comprehensions! طريقة رائعة لإنشاء قوائم جديدة بناءً على قوائم موجودة.

numbers = [1, 2, 3, 4, 5]
squares = [n**2 for n in numbers]
print(squares)

# مقارنة مع الطريقة التقليدية:
# squares_old = []
# for n in numbers:
# squares_old.append(n**2)
# print(squares_old)


List Comprehensions توفر طريقة مختصرة لإنشاء القوائم. بدلاً من كتابة حلقة `for` تقليدية، يمكنك كتابة سطر واحد يقوم بنفس المهمة. الكود أعلاه ينشئ قائمة `squares` تحتوي على مربعات الأرقام في القائمة `numbers`.

['#Python', '#برمجة', '#ListComprehensions', '#كود', '#تطوير']
مشروع Debian Linux اعتمد رسميًا قرار عام يحدد موقفه من استخدام الذكاء الاصطناعي.

القرار اسمه:

«الاستخدام المسؤول للذكاء الاصطناعي التوليدي»

ومضمونه باختصار:

انه Debian لا يشجع ولا يمنع استخدام أدوات الذكاء الاصطناعي التوليدي في تطوير البرمجيات أو صيانتها أو كتابة التوثيق أو بناء الحزم أو أي مواد ثانية تنشر ضمن المشروع.

يعني بشكل أبسط:

استخدم الذكاء الاصطناعي.

لا تستخدمه.

خذ راحتك Debian ماعنده مشكلة 😂

لكن بنفس الوقت القرار يعترف إن استخدام هذي الأدوات بشكل مسؤول ممكن يرفع إنتاجية المساهمين بشكل واضح، ويخلي المتطوعين يصرفون وقتهم المحدود على الأشياء اللي فعلًا تحتاج خبرة تقنية، واتخاذ قرارات، ومراجعة الكود، والعمل مع باقي الفريق.

التصويت انتهى قبل امس، وتم بنظام التصويت التفضيلي.

والآن هذا صار موقف Debian الرسمي من الذكاء الاصطناعي.
المبرمجين زعلانين

مطور معروف في Debian أعلن انسحابه من المشروع بعد تصويت المشاركين لصالح السماح بالمساهمات اللي تستخدم الذكاء الاصطناعي.

المطور Antoine Le Gonidec كتب في بيان انسحابه:

«أريد أن تكون عواقب تقبّل Debian الكامل لتقنيات يدعمها الفاشيون معروفة للجميع».

وقال:

«ماعاد يهمني أي شيء يخرج من Debian».

وأضاف:

«التظاهر باتخاذ موقف محايد أمام الفاشية ماهو حياد، بل تعاون فعلي معها».

يعني قرار Debian اللي كان مضمونه تقريبًا:

استخدم الذكاء الاصطناعي أو لاتستخدمه، إحنا مانمنعه

كان كافي بالنسبة له علشان يترك المشروع بالكامل.

ايش رأيكم بكلامه؟
ناعي قادر يتعامل معها أفضل منه.

يعني وصلنا لمرحلة غريبة شوي:

"ما أعرف بالضبط كيف هذا الكود يشتغل لكن الاختبارات تقول إنه أسرع، صحيح، وما يخرب شيء."

وخلاص نطلقه

السؤال هنا:

هل فعلًا هذي هي المرحلة الطبيعية القادمة للبرمجة؟

ولا إحنا قاعدين نبني طبقات ضخمة من الاكواد اللي محد يفهمها، وبنكتشف المشكلة يوم شيء ينفجر؟ 🤔
This media is not supported in your browser
VIEW IN TELEGRAM
مهندسين OpenAI صاروا يكتبون كود هم أنفسهم مايقدرون يشرحونه سطر بسطر 😂

القصة حكاها جوردان نانوس، محلل في SemiAnalysis، وكان يتعاون مع مهندسين من OpenAI أثناء اختبارهم لشريحة الاستدلال الجديدة Jalapeño على اختبار InferenceX التابع لـ SemiAnalysis.

بحسب كلامه، مهندسين عندهم خبرة تقنية قوية جدًا ماقدروا يشرحون بالتفصيل ايش يسوي الكود سطر بسطر.

والسبب؟

الكود منخفض المستوى بالكامل تم توليده بواسطة Codex.

بالتحديد كان عبارة عن Kernel مكتوب بلغة التجميع منخفضة المستوى Gluon.

والمهندسين أصلًا ماجلسوا يفهمون كل تفاصيله.

ليش؟

لأنه ببساطة… شغال 😂

نانوس يشوف إن هذا مو شيء سيئ، بل بداية تغيير كامل في طريقة تطوير البرمجيات.

المطور مستقبلًا مو بس ممكن ما يكتب الكود بنفسه…

ممكن حتى ما يحتاج يفهم كل سطر فيه.

دوره يصير:

يحدد المشكلة.

يبني المعمارية.

يعطي الذكاء الاصطناعي القيود والمتطلبات.

وبعدها يقيس النتيجة ويتأكد إنها صحيحة وسريعة وتحقق المطلوب.

أما التفاصيل منخفضة المستوى، مثل كيف تتحرك البيانات داخل العتاد وكيف تتم معالجة الذاكرة وتنفيذ التعليمات، فما عاد ضروري الإنسان يفكر فيها بنفس العمق إذا الذكاء الاصط
This media is not supported in your browser
VIEW IN TELEGRAM
واحد كان يستعرض قدرات نظام القيادة الذاتية اللي طوره بنفسه

وأثناء العرض صدم سيارة شرطة 🤣

اختبر في الإنتاج واكتشف الخطأ في الإنتاج 🔥
طلبت من الذكاء الاصطناعي يمر على 160 ألف قصيدة ويعطي كل قصيدة اوازن مناسبه، اتوقع هذا اهم تحديث بيزل وبعدها الاقترحات بتكون اكثر تنوع وبنفس الوقت كلها ضمن اهتماماتك ومافيها قصائد مكرره
الأسبوع هذا سحبت على aws وناوي انقل كل مشاريعي الى hetzner لانه ارخص ولي يومين تقريبا اضبط السرفر واقسمه واثبت postgresql وغيره من الخدمات وتعبت صراحه لانه كنت مخطط ابني سرفر قابل للتوسع وسهل الاداره بالنهايه رحت ابحث عن ادوات مساعدة ولقيت Ansible، والمشروع فعلًا قوي جدًا ومفتوح المصدر، ووصل لأكثر من 69 ألف نجمة على GitHub.

تقدر تستخدم ملفات نصية بسيطة لأتمتة نشر التطبيقات، إعداد الخوادم وإدارة البنية التحتية.

يعني بدل الشغل اليدوي كامل كنت اقدر اكتب Playbook واحد وكل شيء تقريبًا يشتغل تلقائي، بدل ساعتين أو أكثر من الشغل اليدوي.

الإدارة كلها تتم عبر SSH، بدون الحاجة لتثبيت وكيل على الخوادم.

وهذي من أكثر الأشياء اللي اعجبتني انك تعدل الإعداد مرة وتطبقه على عشرات أو مئات الأجهزة بسهولة.

الصياغة واضحة وقريبة من الإنجليزية العادية، علشان كذا تعلمه سريع نسبيًا.

حتى لو شغلكم بالذكاء الاصطناعي، يستاهل تجربوا Ansible، خصوصًا لإدارة الخوادم والبيئات التجريبية.

طبعا يعتبر من الأدوات الأساسية في DevOps بس انا ماكنت اعرفه 😅

https://github.com/ansible/ansible
جربت HUMAIN Chat بعد ما اتيح للعالم صراحة سيء ماتوقعت يكون كذا اغلب الاسئلة تكون عادية مايجاوب عليها والشيء الثاني دام متاح للعالم انا ب اخر الدنيا ايش بستفيد من كود نون واكواد الخصم شركة ملياريه تنشر كوبونات مافهمت الفكرة.
ان شاءالله يتحسن مع الوقت ونشوف نموذج عربي حلو