在Python中使用多重处理时应该如何记录?

问题:

现在我在一个框架中有一个中央模块,它使用Python 2.6 multiprocessing module生成多个进程。因为它使用multiprocessing,有模块级多处理感知日志LOG = multiprocessing.get_logger()。根据the docs,此记录器具有进程共享锁,以便您不要通过将多个进程同时写入到sys.stderr(或任何文件句柄)中。
我现在的问题是框架中的其他模块不是多处理感知的。我看到它的方式,我需要使这个中央模块的所有依赖使用多处理感知日志记录。这是框架的烦人within,更不用说框架的所有客户端。有没有我不想的替代品?

回答:

处理这种非侵入性的唯一方法是:

  1. 产生每个工作进程,使其日志转到不同的文件描述符(到磁盘或管道)。理想情况下,所有日志条目应该是时间戳的。
  2. X-

     

    • If using disk files: Coalesce the log files at the end of the run, sorted by timestamp
    • If using pipes (recommended): Coalesce log entries on-the-fly from all pipes, into a central log file. (E.g., Periodically select from the pipes’ file descriptors, perform merge-sort on the available log entries, and flush to centralized log. Repeat.)

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How should I log while using multiprocessing in Python?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

9 + 1 =