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