开发者社区> 问答> 正文

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

现在,我在框架中有一个中央模块,该模块使用Python 2.6 multiprocessing模块产生多个进程。由于使用multiprocessing,因此存在模块级的多处理感知日志LOG = multiprocessing.get_logger()。根据文档,此记录器具有进程共享的锁,因此您不会sys.stderr通过同时写入多个进程来乱码内容(或任何文件句柄)。

我现在遇到的问题是框架中的其他模块不支持多处理。以我的方式看,我需要使这个中央模块上的所有依赖项都使用支持多处理的日志记录。在框架内这很烦人,更不用说框架的所有客户了。有我没有想到的替代方法吗?

展开
收起
祖安文状元 2020-02-21 15:51:26 469 0
1 条回答
写回答
取消 提交回答
  • 唯一地解决此问题的方法是:

    生成每个工作进程,以便其日志转到不同的文件描述符(到磁盘或管道)。理想情况下,应为所有日志条目加上时间戳。 然后,您的控制器进程可以执行以下操作之一: 如果使用磁盘文件:在运行结束时合并日志文件,按时间戳排序 如果使用管道(推荐):即时将所有管道中的日志条目合并到中央日志文件中。(例如,定期select从管道的文件描述符中,对可用的日志条目执行合并排序,然后刷新到集中式日志。重复。)

    2020-02-21 15:51:30
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载