Trong hướng dẫn này, chúng ta sẽ tìm hiểu về "Trình quản lý bối cảnh" trong Python và cách nó hữu ích trong việc quản lý tài nguyên, bộ mô tả tệp và kết nối cơ sở dữ liệu Show
Quản lý tài nguyên Người dùng sử dụng các tài nguyên như thao tác tệp hoặc kết nối cơ sở dữ liệu rất phổ biến trong bất kỳ ngôn ngữ lập trình nào Nhưng tất cả những tài nguyên này đều có giới hạn. Do đó, vấn đề chính là đảm bảo các tài nguyên này sẽ được giải phóng sau khi sử dụng Bởi vì nếu chúng không được giải phóng, điều này có thể dẫn đến rò rỉ tài nguyên, điều này có thể khiến hệ thống chạy chậm hoặc gặp sự cố. Nếu máy được thiết lập trong hệ thống của người dùng, có thể tự động chia nhỏ tài nguyên, điều đó có thể rất hữu ích. Trong Python, người dùng có thể đạt được điều này bằng cách sử dụng trình quản lý bối cảnh, được sử dụng để hỗ trợ xử lý tài nguyên đúng cách. Cách phổ biến nhất để thực hiện các thao tác với tệp là sử dụng từ khóa "with" trong Python ví dụ 1 Hãy xem một ví dụ về quản lý tập tin. Khi một tệp được mở, các bộ mô tả tệp sẽ được sử dụng, đây là một tài nguyên hạn chế. Quá trình chỉ có thể mở một số lượng tệp hạn chế tại một thời điểm ví dụ 2 đầu ra OSError Traceback (most recent call last) in 1 file_descriptors = [] 2 for Y in range(10000): ----> 3 file_descriptors.append( open ('test_file.txt', 'w')) OSError: [Errno 24] Too many open files: 'test_file.txt' Ví dụ trên là trường hợp rò rỉ bộ mô tả tệp. Đã xảy ra lỗi cho biết "Quá nhiều tệp đang mở". Điều này xảy ra do có quá nhiều tệp đang mở và chúng không được đóng. Có thể có khả năng người dùng đã quên đóng các tệp đang mở Cách quản lý tài nguyên bằng Trình quản lý ngữ cảnhThật khó để đóng một tệp ở mọi nơi nếu khối chương trình đưa ra một ngoại lệ hoặc có bất kỳ thuật toán phức tạp nào với nhiều đường dẫn trả về Hầu hết thời gian, người dùng sử dụng "try-ngoại trừ cuối cùng" trong các ngôn ngữ lập trình khác khi làm việc với tệp để đảm bảo rằng tài nguyên tệp được đóng sau khi sử dụng, ngay cả khi có ngoại lệ. Nhưng trong Python, họ có thể sử dụng "Trình quản lý ngữ cảnh" để quản lý tài nguyên. Người dùng có thể sử dụng từ khóa "with". Khi nó được đánh giá, nó sẽ dẫn đến một đối tượng có thể thực hiện quản lý bối cảnh. Chúng ta có thể viết các trình quản lý ngữ cảnh bằng cách sử dụng các lớp hoặc hàm với các trình trang trí Cách tạo Trình quản lý bối cảnhKhi người dùng tạo trình quản lý bối cảnh, họ cần đảm bảo rằng lớp đó có các phương thức sau. __enter__() và __exit__() Phương thức __enter__() sẽ trả về tài nguyên cần quản lý Phương thức __exit__() sẽ không trả về bất cứ thứ gì ngoài việc thực hiện các thao tác dọn dẹp Hãy xem một ví dụ
Ví dụ đầu ra The 'init' method is called The 'enter' method is called The 'with' statement is block The 'exit' method is called Thí dụ - Trong đoạn mã trên, chúng tôi đã tạo đối tượng "context_manager". Điều đó được gán cho biến sau từ khóa "as", tức là người quản lý. Sau khi chạy chương trình, các phương thức sau được thực hiện theo trình tự
Quản lý tệp bằng Trình quản lý ngữ cảnhBây giờ, chúng ta sẽ áp dụng khái niệm trên để tạo lớp, lớp này có thể giúp quản lý tài nguyên tệp. Lớp "file_manager" sẽ giúp mở tệp, đọc hoặc ghi nội dung rồi đóng tệp Ví dụ đầu ra Cách thực hiện Quản lý tệp bằng cách sử dụng Trình quản lý ngữ cảnh và Câu lệnh "với"Sau khi người dùng thực hiện khối câu lệnh "with", các thao tác sẽ được thực hiện theo trình tự sau
Cách quản lý kết nối cơ sở dữ liệu bằng Trình quản lý ngữ cảnhBây giờ, chúng tôi sẽ trình bày cách tạo một hệ thống quản lý kết nối cơ sở dữ liệu đơn giản. Có một giới hạn trong việc mở số lượng kết nối cơ sở dữ liệu tại một thời điểm, lành mạnh như Bộ mô tả tệp. Do đó, chúng tôi sử dụng trình quản lý bối cảnh, vì nó hữu ích trong việc quản lý các kết nối đến cơ sở dữ liệu vì người dùng có thể quên đóng bộ sưu tập Cài đặt pymongo Để quản lý kết nối cơ sở dữ liệu thông qua trình quản lý nội dung, trước tiên người dùng phải cài đặt thư viện "pymongo" bằng cách sử dụng lệnh sau Ví dụ đầu ra Giải trình Trong đoạn mã trên, sau khi thực hiện khối câu lệnh "with", các thao tác sau sẽ xảy ra theo trình tự
Phần kết luậnTrong hướng dẫn này, chúng ta đã thảo luận về trình quản lý nội dung trong Python, cách tạo Trình quản lý nội dung và cách nó có thể trợ giúp trong Quản lý tài nguyên, quản lý tệp và quản lý các kết nối Cơ sở dữ liệu Sự khác biệt giữa trình quản lý ngữ cảnh và trình trang trí trong Python là gì?trình quản lý bối cảnh là các đối tượng được sử dụng với python với từ khóa. Nó chạy mã khi vào khối và thoát khỏi khối. decorators là những sửa đổi đối với một hàm hoặc định nghĩa lớp. Nó chạy mã thay thế chức năng như nó đang được xác định
Lợi thế của trình quản lý bối cảnh là gì?Chúng cho phép bạn cung cấp và sử dụng lại mã thiết lập và chia nhỏ phổ biến . Nói cách khác, với trình quản lý ngữ cảnh, bạn có thể thực hiện bất kỳ cặp thao tác nào cần thực hiện trước và sau một thao tác hoặc quy trình khác, chẳng hạn như. Mở và đóng. Khóa và phát hành.
Làm cách nào để triển khai trình quản lý ngữ cảnh Python?Trong phương pháp này, có 5 bước để triển khai trình quản lý ngữ cảnh của riêng bạn. . Xác định một chức năng (tùy chọn) Viết bất kỳ mã thiết lập nào mà ngữ cảnh của bạn cần Sử dụng từ khóa năng suất (tùy chọn) Viết bất kỳ mã phân tích nào mà ngữ cảnh của bạn cần Thêm @contextlib. trình trang trí contextmanager Trình quản lý bối cảnh trang trí Python là gì?Decorators là công cụ rất mạnh và hữu ích trong Python vì nó cho phép lập trình viên sửa đổi hành vi của hàm hoặc lớp . Trình trang trí cho phép chúng tôi bọc một chức năng khác để mở rộng hành vi của chức năng được bọc mà không sửa đổi vĩnh viễn nó. |