Bạn cũng có thể sử dụng chức năng getrusage()
từ các module thư viện chuẩn resource
. Đối tượng thu được có thuộc tính ru_maxrss
, mang đến cho tổng số sử dụng bộ nhớ cho quá trình gọi điện thoại:
>>> import resource
>>> resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
2656
các Python docs không rõ ràng về những gì các đơn vị là chính xác, nhưng Mac OS X man page cho getrusage(2)
mô tả các đơn vị như kilobyte.
Trang người dùng Linux không rõ ràng, nhưng dường như nó tương đương với thông tin /proc/self/status
(tức là kilobyte) được mô tả trong câu trả lời được chấp nhận. Đối với quá trình tương tự như trên, chạy trên Linux, các chức năng được liệt kê trong câu trả lời chấp nhận cho:
>>> memory_usage()
{'peak': 6392, 'rss': 2656}
này có thể không được khá dễ dàng để sử dụng như một giải pháp /proc/self/status
, nhưng nó là thư viện chuẩn, vì vậy (được cung cấp các đơn vị là tiêu chuẩn) nó phải là nền tảng chéo và có thể sử dụng trên các hệ thống thiếu /proc/
(ví dụ: Mac OS X và các Unix khác, có thể là Windows).
Ngoài ra, chức năng getrusage()
cũng có thể được cấp resource.RUSAGE_CHILDREN
để sử dụng cho quy trình con và (trên một số hệ thống) resource.RUSAGE_BOTH
để sử dụng toàn bộ (tự và con).
Điều này sẽ bao gồm trường hợp memory_get_usage()
, nhưng không bao gồm mức sử dụng tối đa. Tôi không chắc liệu có bất kỳ chức năng nào khác từ mô-đun resource
có thể cung cấp mức sử dụng cao nhất hay không.
Nguồn
2011-10-06 00:41:21
là đỉnh/cư trú bằng kb hoặc byte? – Shabbyrobe
Câu hỏi hay - tính bằng kilobyte, tôi đã thêm thông tin đó vào câu trả lời gốc. –
Thanks heaps cho câu trả lời tuyệt vời. Là một sang một bên, bạn sẽ có bất kỳ ý tưởng tại sao đỉnh cao kết thúc lên trên 80mb (!!!) nếu tôi đẻ trứng một loạt các chủ đề, mặc dù cư dân vẫn tương đối thấp? Ngoài ra, bạn có bất kỳ manh mối nào về cách thực hiện điều này trên Win32 không? – Shabbyrobe