Page 90 - Python Simple
P. 90

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



                         def run(self):
                             f = zipfile.ZipFile(self.outfile, 'w', zipfile.ZIP_DEFLATED)
                             f.write(self.infile)
                             f.close()
                             print 'Finished background zip of: ', self.infile

                     background = AsyncZip('mydata.txt', 'myarchive.zip')
                     background.start()
                     print 'The main program continues to run in foreground.'

                     background.join()    # Wait for the background task to finish
                     print 'Main program waited until background was done.'

             Khó khăn lớn nhất của các chương trình ứng dụng đa luồng là việc điều phối các luồng
             phải chia sẻ dữ liệu hay các tài nguyên khác. Về mặt này, mô-đun threading hỗ trợ một
             số hàm đồng bộ sơ cấp như các khóa (lock), các sự kiện (event), các biến điều kiện
             (condition) và các cờ hiệu (semaphore).

             Mặc dù các công cụ kể trên rất mạnh, nhung những lỗi thiết kế nhỏ có thể dẫn tới các vấn
             đề rất khó có thể tái tạo được. Do đó, phương pháp được ưa chuộng trong việc điều phối
             các tác vụ là tập hợp các truy cập tới một tài nguyên vào một luồng, sau đó sử dụng
             mô-đun Queue để nạp các yêu cầu từ các luồng khác tới luồng đó. Các trình ứng dụng sử
             dụng đối tượng Queue cho việc giao tiếp và điều phối giữa các luồng có ưu điểm là dễ
             thiết kể hơn, dễ đọc hơn và đáng tin cậy hơn.

             11.5 Nhật ký


             logging (mô-đun) cung cấp một hệ thống ghi nhật ký (logging) linh hoạt và có đầy đủ
             các tính năng. Trong trường hợp đơn giản nhất, một thông điệp nhật ký được gửi tới một
             tập tin hay tới sys.stderr:
                     import logging
                     logging.debug('Debugging information')
                     logging.info('Informational message')
                     logging.warning('Warning:config file %s not found', 'server.conf')
                     logging.error('Error occurred')
                     logging.critical('Critical error -- shutting down')

             Đoạn mã trên sẽ cho kết quả sau:

                     WARNING:root:Warning:config file server.conf not found
                     ERROR:root:Error occurred
                     CRITICAL:root:Critical error -- shutting down

             Theo mặc định, các thông điệp chứa thông tin dành cho việc gỡ rối bị chặn lại và đầu ra
             được gửi tới kênh báo lỗi chuẩn. Các thông điệp này còn có thể được chuyển tiếp tới thư
             điện tử, gói tin, socket hay máy chủ HTTP. Các bộ lọc có thể chọn các cơ chế chuyển tiếp
             tùy theo mức độ ưu tiên của thông điệp: DEBUG, INFO, WARNING, ERROR, và CRITICAL.


             Hệ thống nhật ký có thể được cấu hình trực tiếp bên trong Python hoặc nạp từ một tập
             tin cấu hình mà người dùng có thể sửa đổi được, nhằm tùy biến việc ghi nhật ký mà
             không phải sửa đổi trình ứng dụng.

             11.6 Tham chiếu yếu





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