Với developer, việc hiểu quản lý bộ nhớ thường ít được nghĩ tới. Tuy nhiên, việc này rất quan trọng trong thực tế. Khi dữ liệu ít, ừ thì việc quản lý bộ nhớ nó không được quan tâm. Nhưng khi dự án phình to, dữ liệu nó nở ra nhiều, việc quản lý bộ nhớ không thể bỏ qua. Cái này cũng dễ hiểu, dữ liệu nhiều mà code không tối ưu được về memory, memory lại không nâng cấp dẫn tới ứng dụng chậm chạp hoặc xử lý sai nếu memory leaks. Nếu nâng memory, nó lại dẫn tới chi phí duy trì hệ thống tăng. Đều là vấn đề bất cập cả. Show
Nội dung chính ShowShow
Nội dung chính ShowShowShow
Nội dung chính ShowShow Đầu tiên, bộ nhớ vật lý sẽ được OS tạo ra một bộ nhớ ảo, nơi mà tất cả các ứng dụng, bao gồm cả Python có thể truy cập. Bộ nhớ ảo đó sẽ có trình bảo lý riêng do hệ diều hành làm chủ. Trình quản lý bộ nhớ OS sẽ cấp một đoạn bộ nhớ cho Python. Với Python, hầu như việc quản lý bộ nhớ sẽ do Python Memory Manager xử lý.
Dynamic Memory Allocation Static Memory Allocation còn được gọi là Compile-time allocation. Nó được áp dụng cho variable static và variable global. Memory cho các variable được cấp phát tại thời điểm compilation. 5 được sử dụng để implement static allocation. Trong trường hợp này, memory không thể được sử dụng lại. Dynamic Memory Allocation được áp dụng cho variable local, function argumen. Memory cho các variable được cấp phát tại thời điểm runtime. 6 được sử dụng để implement dynamic allocation. Trong trường hợp này, memory có thể được giải phóng. Everything in Python is an object. Đó là điểm hay của Python. Nó có nghĩa, Dynamic Memory Allocation mới chính là nên tảng của Python Memory Management. Khi object không còn cần thiết, Python Memory Management sẽ tự động lấy lại bộ nhớ đã bị object đó chiếm dụng. Private heap chứa đựng toàn bộ Python objects và data structures. Python memory manager quản lý các private heap theo yêu cầu và developer không có kiểm soát các private heap này. Python memory manager cũng sẽ tương tác với system memory manager để đame bảo có đủ không gian cho private heap. Python memory manager quản lý các khổi bộ nhớ, chúng được gọi là các 7. Các 7 cũng size tạo lên 9. Các pools được tạo lên trong 0. 0 là phần lớn nhất của bộ nhớ và được liên kết trên một ranh giới trang trong bộ nhớ. Một khối bộ nhớ 256kB được phân bổ trên heap = 64 pools. Nếu object không cần thiết nữa, nó sẽ bị hủy và đất chỗ nó chiếm dụng sẽ được Python memory manager lấp đầy bằng một object khác cùng kích thước.Best Practices for Efficient Python CodeMột điều quan trọng là Python memory manager không nhất thiết giải phóng bộ nhớ từ object bị destroyed trở lại OS. Có thể, nó sẽ trả lại cho python interpreter. Python cũng sẽ có một số lượng nhở các objects allocator được giữa lại để sử dụng thêm. Sử dụng joinTránh sử dụng + để nối các string
Sử dụng Generators 0Tránh sử dụng + để nối các stringSử dụng Generators 1Đặt evaluations ngoài loop 2Gán function cho một biến cục bộ Sử dụng built-in functions and librariesSử dụng GeneratorsĐặt evaluations ngoài loop Gán function cho một biến cục bộ 4Đặt evaluations ngoài loopGán function cho một biến cục bộ 5Gán function cho một biến cục bộSử dụng built-in functions and libraries 6Sử dụng built-in functions and librariesSử dụng itertools thay thế loop Gán function cho một biến cục bộ 0Sử dụng Generators 1Sử dụng itertools thay thế loopCheck for performance in Python code Gán function cho một biến cục bộ 2Sử dụng Generators 3Check for performance in Python codeNội dung chính ShowShow 4Đầu tiên, bộ nhớ vật lý sẽ được OS tạo ra một bộ nhớ ảo, nơi mà tất cả các ứng dụng, bao gồm cả Python có thể truy cập. Bộ nhớ ảo đó sẽ có trình bảo lý riêng do hệ diều hành làm chủ. Trình quản lý bộ nhớ OS sẽ cấp một đoạn bộ nhớ cho Python.Với Python, hầu như việc quản lý bộ nhớ sẽ do Python Memory Manager xử lý. Nguồn: https://towardsdatascience.com/memory-man quản lý-in-python-6bea0c8aecc9 |