Page 91 - Python Simple
P. 91

11. Giới thiệu sơ về bộ thư viện chuẩn - Phần II                http://www.vithon.org/tutorial/2.5/node13.html



             Python hỗ trợ việc quản lý bộ nhớ một cách tự động (bao gồm việc đếm tham chiếu với
             hầu hết các đối tượng và việc thu dọn rác). Vùng nhớ được giải phóng nhanh chóng sau
             khi tham chiếu cuối cùng đến nó kết thúc.

             Phương pháp này tỏ ra hiệu quả với hầu hết các trình ứng dụng sử dụng Python, tuy vậy
             đôi khi ta có nhu cầu theo dõi một đối tượng chừng nào chúng được sử dụng ở một chỗ
             khác. Tuy vậy việc theo dõi này lại tạo ra một tham chiếu đến đối tượng đó, khiến bản
             thân nó trở thành một tham chiếu vĩnh viễn. Mô-đun weakref cho phép theo dỗi một đối
             tượng mà không cần phải tạo một tham chiếu tới đối tượng đó. Khi đối tượng không còn
             cần dùng nữa, nó sẽ tự động bị loại ra khỏi bảng tham chiếu yếu và một hàm gọi ngược
             (callback) sẽ được gọi tới đối tượng weakref. Các ứng dụng phổ biến có chứa các đối
             tượng được lưu tạm và đòi hỏi chi phí khởi tạo cao:

                     >>> import weakref, gc
                     >>> class A:
                     ...     def __init__(self, value):
                     ...             self.value = value
                     ...     def __repr__(self):
                     ...             return str(self.value)
                     ...
                     >>> a = A(10)                   # create a reference
                     >>> d = weakref.WeakValueDictionary()
                     >>> d['primary'] = a            # does not create a reference
                     >>> d['primary']                # fetch the object if it is still alive
                     10
                     >>> del a                       # remove the one reference
                     >>> gc.collect()                # run garbage collection right away
                     0
                     >>> d['primary']                # entry was automatically removed
                     Traceback (most recent call last):
                       File "<pyshell#108>", line 1, in -toplevel-
                         d['primary']                # entry was automatically removed
                       File "C:/PY24/lib/weakref.py", line 46, in __getitem__
                         o = self.data[key]()
                     KeyError: 'primary'


             11.7 Công cụ làm việc với danh sách


             Kiểu danh sách sẵn có của Python có thể đáp ứng được nhu cầu về nhiều kiểu cấu trúc dữ
             liệu khác nhau. Tuy vậy chúng ta đôi khi cần tới các kiểu cấu trúc khác, tùy thuộc vào
             các mục tiêu cụ thể về hiệu năng.

             array (mô-đun) cung cấp đối tượng array() giống như một danh sách chứa các dữ liệu
             cùng kiểu và lưu giữ chúng gọn hơn. Ví dụ sau cho thấy một mảng các con số được lưu
             giữ dưới dạng các số không dấu hai byte (mã "H") thay vì mỗi phần tử chiếm 16 byte như
             trong một danh sách thông thường chứa các đối tượng số nguyên của Python:

                     >>> from array import array
                     >>> a = array('H', [4000, 10, 700, 22222])
                     >>> sum(a)
                     26932
                     >>> a[1:3]
                     array('H', [10, 700])


             collections (mô-đun) cung cấp đối tượng deque() giống như một danh sách nhưng có



     5 of 7                                                                                   08/31/2011 10:30 AM
   86   87   88   89   90   91   92   93   94   95   96