现在,我在框架中有一个中央模块,该模块使用Python 2.6 multiprocessing模块产生多个进程。由于使用multiprocessing,因此存在模块级的多处理感知日志LOG = multiprocessing.get_logger()。根据文档,此记录器具有进程共享的锁,因此您不会sys.stderr通过同时写入多个进程来乱码内容(或任何文件句柄)。
我现在遇到的问题是框架中的其他模块不支持多处理。以我的方式看,我需要使这个中央模块上的所有依赖项都使用支持多处理的日志记录。在框架内这很烦人,更不用说框架的所有客户了。有我没有想到的替代方法吗?
唯一地解决此问题的方法是:
生成每个工作进程,以便其日志转到不同的文件描述符(到磁盘或管道)。理想情况下,应为所有日志条目加上时间戳。 然后,您的控制器进程可以执行以下操作之一: 如果使用磁盘文件:在运行结束时合并日志文件,按时间戳排序 如果使用管道(推荐):即时将所有管道中的日志条目合并到中央日志文件中。(例如,定期select从管道的文件描述符中,对可用的日志条目执行合并排序,然后刷新到集中式日志。重复。)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。