Kích thước bộ nhớ int của Python
Trong python, việc sử dụng sys. getsizeof() có thể được thực hiện để tìm kích thước lưu trữ của một đối tượng cụ thể chiếm một số không gian trong bộ nhớ. Hàm này trả về kích thước của đối tượng theo byte. Phải mất nhiều nhất hai đối số i. e Bản thân đối tượng Show
ví dụ. Input: # Any Integer Value sys.getsizeof(4) Expected Output: 4 bytes (Size of integer is 4bytes) Actual Output: 28 bytes Đây là cách chúng ta có thể giải thích đầu ra thực tế. Hãy nhìn vào bảng dưới đây. Loại đối tượngKích thước thựcGhi chúint28NAstr49+1 cho mỗi ký tự bổ sung (49+tổng độ dài ký tự)tuple40 (Bộ trống)+8 cho mỗi mục bổ sung trong một bộ ( 40 + 8*tổng độ dài ký tự )list56 (Danh sách trống)+8 cho mỗi mục bổ sung . 5-19 lấy cỡ 728. Ngày 20 sẽ lấy 2264, v.v.…dict2320-5 lấy kích thước 232. Kích thước 6-10 sẽ là 360. ngày 11 sẽ lấy 640, v.v...func def136Không có thuộc tính và đối số mặc địnhThí dụ Python3
#Python 0____11#Python 2
#Python 0import 5#Python 2
#Python 01sys 3a 6= 6#Python 05sys 3a 8= 6#Python 09a 9 Nếu bạn là một lập trình viên dày dạn kinh nghiệm thì cứ thoải mái chuyển thẳng sang phần có tên “Các loại số trong Python”, vì phần đầu tiên có thể sẽ không dạy cho bạn nhiều điều mới. Nếu không, chỉ cần tiếp tục đọc Các loại rõ ràng và tiềm ẩnPython là một ngôn ngữ siêu phổ biến và một trong những lý do cho điều này là bạn không phải suy nghĩ về các loại dữ liệu khác nhau khi viết mã bằng Python. Trong khi ở các ngôn ngữ như C, C# và Java, bạn phải chỉ định loại dữ liệu của một biến, thì trong Python, bạn có thể bỏ qua điều đó và chỉ cần nhập tên biến của mình và sau đó bạn có thể sử dụng. Thời tiết mà bạn cho là tốt hay không thì tất nhiên là chủ quan. Một số nhà phát triển ghét các ngôn ngữ lập trình không được nhập chính xác, vì việc thiếu các loại sẽ làm tăng nguy cơ tạo mã dễ bị tổn thương và không thể đoán trước, nếu bạn không cẩn thận và nhận thức được những gì mình đang làm. Mặt khác, một số nhà phát triển thực sự thích khả năng ghi và đọc mà Python mang lại, bởi vì cú pháp ít dài dòng hơn. Trong bài đăng này, tôi muốn cung cấp cho bạn một số thông tin chi tiết hơn về cách các con số trong Python hoạt động và điều gì đang diễn ra bên trong Python Hệ quả của các kiểu ẩn trong PythonTôi nghĩ rằng một trong những hậu quả của Python khi không có các loại rõ ràng là rất nhiều người dùng mới, (bao gồm cả tôi cho đến gần đây), không thực sự nhận thức được điều gì đang xảy ra đằng sau những con số mà họ tạo bằng ngôn ngữ. Hãy xem một ví dụ #Python Trong khối mã trên, chúng tôi khởi tạo một số nguyên và một số dấu phẩy động (số có dấu thập phân) Trong một ngôn ngữ như C, cùng một mã có thể trông như thế này //C Như bạn có thể thấy, trong C có sự khác biệt rõ ràng giữa hai biến và chúng ta phải xác định rằng số dấu phẩy động là số float và số nguyên là số nguyên Còn nhiều điều nữa để tìm hiểu về các loại số trong C, nhưng tôi sẽ không đi sâu hơn vào vấn đề đó ngay bây giờ Nếu Python là ngôn ngữ lập trình duy nhất mà bạn có kinh nghiệm, thì bạn có thể không suy nghĩ nhiều nếu có sự khác biệt lớn giữa số nguyên và số thập phân. Tuy nhiên, trong hầu hết các ngôn ngữ khác, đó thực sự là một vấn đề khá lớn
Bạn cá là có Các loại số trong PythonNếu chúng ta sử dụng hàm Như bạn có thể thấy, loại x là ________ 85 và loại y là ________ 86. Vì vậy, Python thực sự có cả int và float, mặc dù nó không rõ ràng khi chỉ khởi tạo các số trong các biến Kích thước của int và floatBây giờ chúng ta hãy xem kích thước byte của các kiểu int và float trong C và Python Lưu ý rằng kích thước chính xác của các loại dữ liệu khác nhau sẽ khác nhau tùy thuộc vào kiến trúc CPU và trình biên dịch được sử dụng để biên dịch chương trình, tuy nhiên để giữ cho bài đăng này đơn giản và dễ theo dõi hơn, tôi sẽ sử dụng kích thước phù hợp với hệ thống của mình Đây là một chương trình C nhỏ in ra kích thước int và float của chúng tôi In kích thước của int và float trong CNhư bạn có thể thấy trong terminal bên phải khi chạy chương trình, cả hai kích thước đều là 4 byte, có nghĩa là chúng ta sử dụng 32 bit (8 * 4) để biểu diễn các số Tiếp theo, làm điều tương tự trong Python, (hãy nhớ rằng x thực sự là một số nguyên và y là số float, như chúng ta đã khám phá trước đó) In kích thước của int và float trong Python28 byte cho int và 24 byte cho float. Điều đó có nghĩa là số 42 chiếm bộ nhớ gấp 7 lần trong Python so với trong C Đây là một trong những lý do tại sao mã Python thường chậm hơn mã C và tại sao nó cần nhiều bộ nhớ hơn
Không, nó không. Nó chỉ có nghĩa là Python có thể không phải là công cụ phù hợp cho mọi tình huống. Ví dụ: nếu mã của bạn cần chạy trên thiết bị có tài nguyên thấp thì C có thể là ngôn ngữ phù hợp hơn cho tác vụ Tại sao int 42 yêu cầu 28 byte trong Python?Trong phần còn lại của bài viết này, tôi sẽ chủ yếu tập trung vào int và để dành phần nói về số float cho một ngày khác Lý do int 42 chiếm quá nhiều không gian trong Python là vì nó không chỉ là số. Như chúng ta đã thấy trước đó, loại biến x của chúng ta thực sự là Bốn thuộc tính là
Tất cả cùng nhau, điều này có nghĩa là một thể hiện của lớp int trong Python yêu cầu không gian cho một Có lẽ bạn đã tìm ra cách tích lũy này lên 28 byte cho số 42 của chúng tôi. Tuy nhiên, để làm cho nó siêu rõ ràng, hãy quay lại một số mã C và kiểm tra kích thước của các loại dữ liệu đó In ra kích thước của các loại dữ liệu bổ sung trong CTổng hợp 4 kích thước đó dẫn chúng ta đến 28 byte thần bí và đó là lý do tại sao số 42 của chúng ta chiếm quá nhiều dung lượng trong Python Giới hạn phạm vi của intTrong các kiểu dữ liệu C chỉ có thể chứa một số dãy số nhất định, vì chúng sẽ hết bit tại một số điểm. Chúng tôi có thể kiểm tra phạm vi của 4 byte int trên hệ thống của mình theo cách sau INT_MIN và INT_MAX trong CĐiều này có nghĩa là nếu chúng ta muốn lưu trữ một số lớn hơn 2147483647 hoặc nhỏ hơn -2147483648 thì chúng ta phải sử dụng kiểu dữ liệu khác Điều này hoạt động khác trong Python, vì đơn giản là không có giới hạn về số lượng giá trị lớn mà bạn có thể lưu trữ. Python sẽ đơn giản tiếp tục phân bổ nhiều byte hơn cho int của bạn In kích thước của các số rất lớn bằng PythonNhư bạn có thể thấy trong ảnh chụp màn hình ở trên, các số càng chiếm nhiều dung lượng thì chúng càng lớn. (Toán tử //C 2 có nghĩa là lũy thừa của)Những từ cuốiBởi vì Python là một ngôn ngữ cấp cao nên nó trừu tượng hóa khái niệm về các loại dữ liệu khác nhau và các giới hạn kích thước thông thường mà chúng có. Ưu điểm của điều này là bạn có ít chi tiết kỹ thuật hơn để lo lắng và khả năng đọc và ghi có thể được cải thiện. Nhược điểm của điều này là bạn không hoàn toàn nhận thức được điều gì đang thực sự xảy ra và bạn không có nhiều quyền kiểm soát đối với các chi tiết nhỏ hơn trong chương trình của mình, điều này có thể khiến việc tối ưu hóa trở nên khó khăn hơn. Bây giờ bạn đã biết tại sao các số trong Python lại cần nhiều bộ nhớ đến vậy và hy vọng bạn có thể sử dụng kiến thức này để làm lợi thế cho mình Một int sử dụng bao nhiêu bộ nhớ?1 Số nguyên. Các số nguyên thường được lưu trữ bằng cách sử dụng một từ bộ nhớ, đó là 4 byte hoặc 32 bit , vì vậy các số nguyên từ 0 đến 4.294.967.295 (232 - 1) có thể được lưu trữ .
Một số nguyên trong Python có thể lớn đến mức nào trong 64Số nguyên có dấu 64 bit. Nó có giá trị tối thiểu là -9.223.372.036.854.775.808 và giá trị tối đa là 9.223.372.036.854.775.807 (đã bao gồm) . Số nguyên không dấu 64 bit. Nó có giá trị nhỏ nhất là 0 và giá trị lớn nhất là (2^64)-1 (đã bao gồm).
Kích thước int mặc định của Python là gì?x - kiểu int hiện có độ dài không giới hạn theo mặc định. Bạn không cần phải chỉ định loại biến bạn muốn; . số nguyên. Kiểu số nguyên cơ bản trong python, tương đương với phần cứng 'c long' cho nền tảng bạn đang sử dụng trong Python 2. x, không giới hạn độ dài trong Python 3.
Danh sách 1000000 số nguyên chiếm bao nhiêu byte trong Python?Điều gì tạo nên một số nguyên trong Python. Vì một số nguyên nhỏ sử dụng 28 byte nên bây giờ chúng ta đã biết tại sao một triệu số nguyên chiếm 28MB RAM. Nhưng tại sao số nguyên Python lại chiếm nhiều bộ nhớ như vậy? . |