আমি কয়েকটি বড় ফাইল বিশ্লেষণ করার জন্য অজগর ব্যবহার করছি এবং আমি স্মৃতি সংক্রান্ত সমস্যাগুলির মধ্যে চলেছি, তাই আমি ব্যবহারের চেষ্টা করতে এবং ট্র্যাক রাখতে sys.getsizeof () ব্যবহার করছি, তবে অদ্ভুত অ্যারেগুলির সাথে আচরণ করা উদ্ভট। আলবেডোসের মানচিত্রের সাথে জড়িত একটি উদাহরণ যা আমি খুলতে যাচ্ছি:
>>> import numpy as np
>>> import struct
>>> from sys import getsizeof
>>> f = open('Albedo_map.assoc', 'rb')
>>> getsizeof(f)
144
>>> albedo = struct.unpack('%df' % (7200*3600), f.read(7200*3600*4))
>>> getsizeof(albedo)
207360056
>>> albedo = np.array(albedo).reshape(3600,7200)
>>> getsizeof(albedo)
80
ঠিক আছে তথ্য এখনও আছে, কিন্তু বস্তুর আকার, একটি 3600x7200 পিক্সেল মানচিত্র, 200 এমবি থেকে 80 বাইটে চলে গেছে। আমি আশা করতে চাই যে আমার স্মৃতি সংক্রান্ত সমস্যাগুলি শেষ হয়ে গেছে এবং কেবল সমস্ত কিছুকে ন্যালি অ্যারে রূপান্তর করবে, তবে আমি অনুভব করি যে এই আচরণটি যদি সত্য হয় তবে কোনওভাবে তথ্য তত্ত্ব বা থার্মোডিনামিক্সের কিছু আইন লঙ্ঘন করবে, তাই আমি বিশ্বাস করতে ঝোঁক যে getizeof () নাম্বার অ্যারে নিয়ে কাজ করে না। কোন ধারনা?
getsizeof
মেমরির গ্রহণের একটি অবিশ্বাস্য সূচক তৈরি করে, বিশেষত তৃতীয় পক্ষের এক্সটেনশনের জন্য।
resize
এটি ফিরিয়ে দিচ্ছে view
। আপনি আসলের তথ্যটি পেয়ে যাচ্ছেন, আকারের আকার পাচ্ছেন।
sys.getsizeof(albedo.base)
অ-দর্শনটির আকার দেবে।
sys.getsizeof
: "বাইটগুলিতে কোনও বস্তুর আকার ফিরিয়ে দিন The বস্তুটি যে কোনও ধরণের অবজেক্ট হতে পারে All সমস্ত অন্তর্নির্মিত বস্তুগুলি সঠিক ফলাফল প্রত্যাবর্তন করবে, তবে তৃতীয় পক্ষের এক্সটেনশানগুলির যেমন আছে তেমন সত্য রাখতে হবে না third বাস্তবায়ন সুনির্দিষ্ট। কেবলমাত্র অবজেক্টের সাথে দায়বদ্ধ মেমোরি খরচ ব্যবহার করা হয়, এটি উল্লেখ করা বস্তুর মেমরির খরচ নয় "