为什么要重新初始化多进程工作者?

时间:2019-12-09 05:43:14

标签: python garbage-collection multiprocessing

我在Python多处理池库文档中找到了此注释:

  

Pool中的工作进程通常可以完整运行   池工作队列的持续时间。其他常见的模式   系统(例如Apache,mod_wsgi等)以释放由其持有的资源   worker是允许池中的工作者仅完成一组任务   离开,清理和重新装修之前的工作量   进程取代了旧的进程。 maxtasksperchild参数   向池中展示这一功能给最终用户。

它说Apache和其他人重新初始化了多进程实体,这使其成为一个很好的模式。是否需要重新初始化对象(例如“ OOP”对象)以调用垃圾回收器?它为什么如此重要?存在多处理对象时无法使用GC?

1 个答案:

答案 0 :(得分:1)

主要用例之一是避免小泄漏(内存,fd等)影响运行时间长的服务。

由于软件不够完善,通常某些库未正确清理。由于这些问题不在开发人员的控制范围内,一个简单的解决方法是定期终止泄漏过程并重新开始。

另一个用例是控制服务的内存消耗。例如,Python内存碎片通常导致工作人员吃掉比所需更多的内存。