我写了一个递归的python函数。在30分钟 - 1小时后,它取消了该过程,因为它耗尽了内存。如果我查看任务管理器,我也会看到使用了太多内存。如果我重新启动该功能,一切都会好起来的。如何避免这个问题并让程序“永远运行”?
答案 0 :(得分:1)
根据经验,您不应在长时间运行的程序中使用递归调用。当然也有例外......
递归函数通常用于应用程序指示管理调用该功能的内容的地方:例如。遍历树结构,或在数据库中查找某些内容,直到达到一定程度的细节。
长时间运行的程序很少属于那个类......甚至用机器人抓页也总是有一个参考点(当一个站点的“刮擦”完成时),递归必须白手起家。有时很难诊断问题(我发现,在我的网站的日志中,一个知名的机器人在一个坏链路上被卡在无限循环上。小心无限循环!)。
扩展Python的堆栈很少是解决方案...在代码中添加行以检查递归深度在应用程序中以已知的时间间隔返回到0。或者添加深度计数器......