2012-11-23 33 views
8

Tôi đã gặp khó khăn với việc ghi nhật ký đa xử lý trong một thời gian và vì nhiều lý do.Ghi nhật ký đa xử lý Python - lý do tại sao multiprocessing.get_logger

Một trong những lý do của tôi là tại sao một get_logger khác.

Tất nhiên tôi đã nhìn thấy this question và có vẻ như trình ghi nhật ký xử lý multiprocessing.get_logger thực hiện một số phép thuật "khóa chia sẻ quy trình" để làm cho việc ghi nhật ký xử lý trơn tru.

Vì vậy, hôm nay tôi đã xem xét mã đa xử lý Python 2.7 (/multiprocessing/util.py), và thấy rằng trình ghi nhật ký này chỉ là một ghi nhật ký đơn giản, và hầu như không có bất kỳ phép thuật nào xung quanh nó.

Dưới đây là mô tả trong tài liệu Python, ngay trước khi chức năng get_logger:

Một số hỗ trợ cho khai thác gỗ có sẵn. Tuy nhiên, lưu ý rằng gói ghi nhật ký không sử dụng khóa chia sẻ quy trình để có thể (tùy thuộc vào trên loại trình xử lý) cho các thư từ các quá trình khác nhau để nhận được trộn lẫn.

Vì vậy, khi bạn sử dụng trình xử lý ghi nhật ký sai, ngay cả trình ghi nhật ký get_logger có thể bị lỗi? Tôi đã sử dụng một chương trình sử dụng get_logger để đăng nhập một thời gian. Nó in các bản ghi vào StreamHandler và (dường như) không bao giờ bị lẫn lộn.

Bây giờ lý thuyết của tôi là:

  1. multiprocessing.get_logger không làm khóa quá trình chia sẻ ở tất cả
  2. StreamHandler làm việc cho đa, nhưng FileHandler không
  3. mục đích chính của logger get_logger này dùng để theo dõi vòng đời của quy trình theo dõi và cung cấp nhật ký dễ sử dụng và sẵn sàng để sử dụng đã ghi nhật ký tên/loại công cụ của quá trình

Đây là câu hỏi:

Lý thuyết của tôi có đúng không?

Làm cách nào/Tại sao/Khi nào bạn sử dụng get_logger này?

Trả lời

1

Câu trả lời này không phải là về số get_logger cụ thể, nhưng có lẽ bạn có thể sử dụng cách tiếp cận được đề xuất trong this post? Lưu ý rằng các lớp học QueueHandler/QueueListener có sẵn cho các phiên bản Python cũ hơn thông qua gói logutils (có sẵn on PyPI).

+0

Rất tiếc, tôi không thể truy cập blobspot vì tôi đang ở đâu, tôi biết bài đăng của bạn là về ghi nhật ký đa xử lý, cảm ơn. Về điều đó, tôi thực sự có ý định sử dụng zmq.log cho dự án của tôi sử dụng zmq. :-) – tdihp

Các vấn đề liên quan