我编写了一个递归python函数。30分钟-1小时后,由于内存耗尽,它取消了进程。如果我查看任务管理器,我还会发现过多的内存被使用。如果我重新启动这个函数,一切都会好起来的。我怎样才能避免这个问题,让程序“永远运行”?
发布于 2015-08-19 01:22:21
根据经验,您不应该在长时间运行的程序中使用递归调用.当然也有例外..。
当应用程序指示管理需要该功能的东西时,通常使用递归函数:例如。遍历树结构,或在数据库中查找某些内容,直到达到一定的详细程度。
长时间运行的程序很少属于那一类.即使是用机器人抓取页面也总是有一个参照点(当一个站点的“刮”完成时),递归必须从零开始。有时很难诊断出这个问题(我发现,在我的网站日志中,有一个更著名的机器人被困在一个坏链接上的无限循环中。)小心无限的循环!)
扩展Python的堆栈很少是解决方案..。向代码中添加行,以检查应用程序中递归深度是否以已知间隔返回到0。或者加上深度计数器..。
https://stackoverflow.com/questions/32084838
复制相似问题