ahmed1990 نشر 30 نوفمبر 2015 أرسل تقرير نشر 30 نوفمبر 2015 هل هنالك طريقة في بايثون لمعرفة حجم الذاكرة المستخدمة حاليا؟ لأنني أريد أن أعرف كم يستهلك برنامجي من الذاكرة لتقليله. اقتباس
0 هشام رزق الله نشر 30 نوفمبر 2015 أرسل تقرير نشر 30 نوفمبر 2015 هنالك عدة طرق يمكنك استخدامها لمعرفة حجم الاستهلاك في لغة بايثون، وتعتمد هذه الطرق على نوع نظام التشغيل الذي تستخدمه، فلو كنت تستخدم نظام ويندوز فيمكنك في هذه الحالة استخدام وحدة WMI التي تحتوي على عدة دوال يمكنك أن تساعدك كما في المثال التالي:def memory(): import os from wmi import WMI w = WMI('.') result = w.query("SELECT WorkingSet FROM Win32_PerfRawData_PerfProc_Process WHERE IDProcess=%d" % os.getpid()) return int(result[0]['WorkingSet']) أما في نظام لينكس فيمكنك استخدام دوال مكتبة os بالإضافة إلى ذلك سوف نعتمد على ملف status من proc لمعرفة حجم الاستهلاك كما في المثال التالي:import os _proc_status = '/proc/%d/status' % os.getpid() _scale = {'kB': 1024.0, 'mB': 1024.0*1024.0, 'KB': 1024.0, 'MB': 1024.0*1024.0} def _VmB(VmKey): '''Private. ''' global _proc_status, _scale # get pseudo file /proc/<pid>/status try: t = open(_proc_status) v = t.read() t.close() except: return 0.0 # non-Linux? # get VmKey line e.g. 'VmRSS: 9999 kB\n ...' i = v.index(VmKey) v = v[i:].split(None, 3) # whitespace if len(v) < 3: return 0.0 # invalid format? # convert Vm value to bytes return float(v[1]) * _scale[v[2]] def memory(since=0.0): '''Return memory usage in bytes. ''' return _VmB('VmSize:') - since def resident(since=0.0): '''Return resident memory usage in bytes. ''' return _VmB('VmRSS:') - since def stacksize(since=0.0): '''Return stack size in bytes. ''' return _VmB('VmStk:') - sinceالمصدر اقتباس
السؤال
ahmed1990
هل هنالك طريقة في بايثون لمعرفة حجم الذاكرة المستخدمة حاليا؟ لأنني أريد أن أعرف كم يستهلك برنامجي من الذاكرة لتقليله.
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.