سطرا بايثون يلتهمان الذاكرة بثانية !

S_D

من الدوال المفيدة في مكتبة itertools في بايثون هي count وتقوم بإرجاع مولد أرقام لانهائي..

لكن ماذا لو حاولنا جمع عدد لا نهائي من الارقام في قائمة بايثون ؟ سنصل حتمًا لنقطة تنتهي معها كل الذاكرة المتاحة وسيتجمد كل شيء وستضطر لاستعمال القوة وقطع شريان الحياة عن الجهاز !

الكود:

from itertools import count
list(count())
يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

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

هنـــاك دوال لانهائيــة كثيــرة، وتستخــدم بكثــرة، وهنــاك حاجات إلى برامــج لانهائيــة مثل تلك التــي في المشغــلات (Workers). المبرمــج هو من يحــدد قدر إستهــلاك برنامجه لموارد الجهــاز، ويحصــر المخاطــر و ويعالجهــا.

بالنسبة لسؤالك،

لكن ماذا لو حاولنا جمع عدد لا نهائي من الارقام في قائمة بايثون ؟ سنصل حتمًا لنقطة تنتهي معها كل الذاكرة المتاحة وسيتجمد كل شيء وستضطر لاستعمال القوة وقطع شريان الحياة عن الجهاز !

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

يبدو أنك فهمت الموضوع من جهة مختلفة تمامًا !

ما أردت إيصاله هو طريقة طريفة لتعبئة الذاكرة وتعريفًا بالدالة count وليس اتهامًا للغة بالقصور أو ما شابه :)

-7

هل تريد أن تعدم جهازك؟

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

الهمنا بذكائك إذاً