我在Python多处理池库文档中找到了此注释:
Pool中的工作进程通常可以完整运行 池工作队列的持续时间。其他常见的模式 系统(例如Apache,mod_wsgi等)以释放由其持有的资源 worker是允许池中的工作者仅完成一组任务 离开,清理和重新装修之前的工作量 进程取代了旧的进程。 maxtasksperchild参数 向池中展示这一功能给最终用户。
它说Apache和其他人重新初始化了多进程实体,这使其成为一个很好的模式。是否需要重新初始化对象(例如“ OOP”对象)以调用垃圾回收器?它为什么如此重要?存在多处理对象时无法使用GC?
答案 0 :(得分:1)
主要用例之一是避免小泄漏(内存,fd等)影响运行时间长的服务。
由于软件不够完善,通常某些库未正确清理。由于这些问题不在开发人员的控制范围内,一个简单的解决方法是定期终止泄漏过程并重新开始。
另一个用例是控制服务的内存消耗。例如,Python内存碎片通常导致工作人员吃掉比所需更多的内存。