سطرا بايثون يلتهمان الذاكرة بثانية !
من الدوال المفيدة في مكتبة itertools في بايثون هي count وتقوم بإرجاع مولد أرقام لانهائي..
لكن ماذا لو حاولنا جمع عدد لا نهائي من الارقام في قائمة بايثون ؟ سنصل حتمًا لنقطة تنتهي معها كل الذاكرة المتاحة وسيتجمد كل شيء وستضطر لاستعمال القوة وقطع شريان الحياة عن الجهاز !
الكود:
from itertools import count
list(count())
التعليقات
لغــة البرمجــة عبارة عن أداة، يستخدمهــا المبرمج. تستطيــع من خلالها صنــع شيء مفيــد أو شيء مضــر. كذلك المكتبات، تقدم لك أدوات مختلفــة، تساعــدك في عمــلك. لذلك، فعندمــا تكتب برنامج يحتوي على هذه السطرين، ليست السطرين هي التي تلتهــم الذاكرة بل المبرمج هو الذي جعلهمــا يلتهمان الذاكرة، أو حتى في بعض الضروف برنامــج يؤذي الجهاز بشكل عام.
هنـــاك دوال لانهائيــة كثيــرة، وتستخــدم بكثــرة، وهنــاك حاجات إلى برامــج لانهائيــة مثل تلك التــي في المشغــلات (Workers). المبرمــج هو من يحــدد قدر إستهــلاك برنامجه لموارد الجهــاز، ويحصــر المخاطــر و ويعالجهــا.
بالنسبة لسؤالك،
لكن ماذا لو حاولنا جمع عدد لا نهائي من الارقام في قائمة بايثون ؟ سنصل حتمًا لنقطة تنتهي معها كل الذاكرة المتاحة وسيتجمد كل شيء وستضطر لاستعمال القوة وقطع شريان الحياة عن الجهاز !
تستطيــع فعل ذلك بالطبــع إذا كان مفيــداً بطرق عــدة مدروســة، حسب الحاجــة لها دون أن تنتهي الذاكرة أو يتجمـد أي شيء.