পাইথনে ভেরিয়েবল এবং মেমরি কীভাবে পরিচালিত হয়? এটিতে কি একটি স্ট্যাক এবং একটি গাদা আছে এবং মেমরি পরিচালনা করতে কোন অ্যালগরিদম ব্যবহার করা হয়? এই জ্ঞানটি দেওয়া কি বিশাল সংখ্যক / ডেটা ক্রাঞ্চিংয়ের জন্য মেমরি পরিচালনার বিষয়ে কোনও সুপারিশ রয়েছে?
পাইথনে ভেরিয়েবল এবং মেমরি কীভাবে পরিচালিত হয়? এটিতে কি একটি স্ট্যাক এবং একটি গাদা আছে এবং মেমরি পরিচালনা করতে কোন অ্যালগরিদম ব্যবহার করা হয়? এই জ্ঞানটি দেওয়া কি বিশাল সংখ্যক / ডেটা ক্রাঞ্চিংয়ের জন্য মেমরি পরিচালনার বিষয়ে কোনও সুপারিশ রয়েছে?
উত্তর:
পাইথনে কীভাবে ভেরিয়েবল এবং মেমরি পরিচালিত হয়।
অটোমেগালি! না, সত্যই, আপনি কেবল একটি বস্তু তৈরি করেছেন এবং পাইথন ভার্চুয়াল মেশিনটি প্রয়োজনীয় মেমরি পরিচালনা করে এবং এটি মেমরির বিন্যাসে কোথায় স্থাপন করা হবে।
এটিতে কি একটি স্ট্যাক এবং একটি গাদা রয়েছে এবং মেমরি পরিচালনা করতে কোন অ্যালগরিদম ব্যবহার করা হয়?
আমরা যখন CPython
এটির বিষয়ে কথা বলি তখন অবজেক্টগুলি সঞ্চয় করার জন্য একটি ব্যক্তিগত গাদা ব্যবহার করে। সিপিথন সি এপিআই ডকুমেন্টেশন থেকে :
পাইথনের মেমোরি পরিচালনার সাথে সমস্ত পাইথন অবজেক্ট এবং ডেটা স্ট্রাকচার যুক্ত একটি ব্যক্তিগত গাদা জড়িত। পাইথন মেমরি পরিচালকের মাধ্যমে এই ব্যক্তিগত স্তূপের অভ্যন্তরীণভাবে নিশ্চিত করা হয়েছে। পাইথন মেমোরি ম্যানেজারের বিভিন্ন উপাদান রয়েছে যা বিভিন্ন গতিশীল স্টোরেজ পরিচালনার দিকগুলি ভাগ করে নেওয়ার, বিভাগকরণ, পূর্বনির্ধারণ বা ক্যাচিংয়ের সাথে কাজ করে।
মেমরি পুনরুদ্ধার বেশিরভাগ ক্ষেত্রে রেফারেন্স গণনা দ্বারা পরিচালিত হয় । এটি হ'ল পাইথন ভিএম কোনও সামগ্রীর জন্য কতগুলি রেফারেন্স উল্লেখ করে তার একটি অভ্যন্তরীণ জার্নাল রাখে এবং স্বয়ংক্রিয়ভাবে আবর্জনা সংগ্রহ করে যখন সেখানে উল্লেখ করা হয় না। এছাড়াও, অ্যাক্সেসযোগ্য "দ্বীপপুঞ্জ" অবজেক্টগুলির সনাক্তকরণের মাধ্যমে বিজ্ঞপ্তিযুক্ত রেফারেন্সগুলি (যা রেফারেন্স গণনা পরিচালনা করতে পারে না) ভাঙ্গার একটি প্রক্রিয়া রয়েছে , কিছুটা প্রথাগত জিসি অ্যালগরিদমগুলির বিপরীতে যা সমস্ত পৌঁছনীয় অবজেক্টগুলি সন্ধান করার চেষ্টা করে।
দ্রষ্টব্য: দয়া করে মনে রাখবেন যে এই তথ্যটিCPython
নির্দিষ্ট। যেমন অন্য পাইথন বাস্তবায়নের,pypy
,iron python
,jython
এবং অন্যদের পরস্পর থেকে CPython থেকে ভিন্ন হতে পারে যখন তা তাদের বাস্তবায়ন সুনির্দিষ্ট আসে। এটি আরও ভালভাবে বুঝতে, এটি বুঝতে সাহায্য করতে পারে পাইথনের শব্দার্থবিজ্ঞানের (ভাষা) এবং অন্তর্নিহিত প্রয়োগের মধ্যে পার্থক্য রয়েছে
এই জ্ঞানটি দেওয়া কি বিশাল সংখ্যক / ডেটা ক্রাঞ্চিংয়ের জন্য মেমরি পরিচালনার বিষয়ে কোনও সুপারিশ রয়েছে?
এখন আমি এ সম্পর্কে কথা বলতে পারি না, তবে আমি নিশ্চিত যে নুমপি (সংখ্যা ক্রাঞ্চিংয়ের জন্য সর্বাধিক জনপ্রিয় পাইথন লাইব্রেরি) এমন এমন ব্যবস্থা আছে যা মেমরির ব্যবহারটি কৌতুকপূর্ণভাবে পরিচালনা করে।
আপনি যদি পাইথনের অভ্যন্তরীণ সম্পর্কে আরও জানতে চান তবে এই সংস্থানগুলি দেখুন:
পাইথন নেই কোন ধরনের জিনিস।
পাইথন হল ভাষা এবং পাইথনের দ্বারা নির্ধারিত শব্দার্থক শব্দগুলি কীভাবে বাস্তবায়ন করতে হবে তা নির্দিষ্ট করে না ।
প্রতিটি বাস্তবায়ন (সিপিথন, পাইপাই , আয়রন পাইথন , স্ট্যাকলেস , জাইথন ...) নিজস্ব কাজটি করতে নিখরচায়!
ইন সি পাইথন, সব বস্তু গাদা উপর বাস:
পাইথনের মেমোরি পরিচালনার সাথে সমস্ত পাইথন অবজেক্ট এবং ডেটা স্ট্রাকচার যুক্ত একটি ব্যক্তিগত গাদা জড়িত। ঘ
সিপিথন ভার্চুয়াল মেশিনটি স্ট্যাক ভিত্তিক:
>>> def g():
x = 1
y = 2
return f(x, y)
>>> import dis
>>> dis.dis(g)
2 0 LOAD_CONST 1 (1) # Push 1 onto the stack
3 STORE_FAST 0 (x) # Stores top of stack into local var x
3 6 LOAD_CONST 2 (2) # Push 2 onto stack
9 STORE_FAST 1 (y) # Store TOS into local var y
4 12 LOAD_GLOBAL 0 (f) # Push f onto stack
15 LOAD_FAST 0 (x) # Push x onto stack
18 LOAD_FAST 1 (y) # Push y onto stack
21 CALL_FUNCTION 2 # Execute function with 2
# f's return value is pushed on stack
24 RETURN_VALUE # Return TOS to caller (result of f)
মনে রাখবেন, এটি সিপিথন নির্দিষ্ট। স্ট্যাকটিতে প্রকৃত মানগুলি অন্তর্ভুক্ত নয় যদিও এটি objects অবজেক্টের রেফারেন্স রাখে।
1 : উত্স